• day02-格式化输出


     python格式化字符串有%和{}两种 字符串格式控制符.

    字符串输入数据格式类型(%格式操作符号)

    %%百分号标记
    %c字符及其ASCII码
    %s字符串
    %d有符号整数(十进制)
    %u无符号整数(十进制)
    %o无符号整数(八进制)
    %x无符号整数(十六进制)
    %X无符号整数(十六进制大写字符)
    %e浮点数字(科学计数法)
    %E浮点数字(科学计数法,用E代替e)
    %f浮点数字(用小数点符号)
    %g浮点数字(根据值的大小采用%e或%f)
    %G浮点数字(类似于%g)
    %p指针(用十六进制打印值的内存地址)
    %n存储输出字符的数量放进参数列表的下一个变量中


    字符串格式控制
    %[(name)][flag][width][.][precision]type

    name:可为空,数字(占位),命名(传递参数名,不能以数字开头)以字典格式映射格式化,其为键名

    flag:标记格式限定符号,包含+-#和0,+表示右对齐(会显示正负号),-左对齐,前面默认为填充空格(即默认右对齐),0表示填充0,#表示八进制时前面补充0,16进制数填充0x,二进制填充0b

    宽度(最短长度,包含小数点,小于width时会填充)

    precision:小数点后的位数,与C相同

    type:输入格式类型,请看上面


    还有一种format_spec格式
    {[name][:][[fill]align][sign][#][0][width][,][.precision][type]}

    用{}包裹name命名传递给format以命名=值 写法,非字典映射,其他和上面相同

    fill = <any character>  #fill是表示可以填写任何字符
    align = "<" | ">" | "=" | "^"  #align是对齐方式,<是左对齐, >是右对齐,^是居中对齐。
    sign = "+" | "-" | " "  #sign是符号, +表示正号, -表示负号
    width = integer  #width是数字宽度,表示总共输出多少位数字
    precision = integer  #precision是小数保留位数
    type = "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"  #type是输出数字值是的表示方式,比如b是二进制表示;比如E是指数表示;比如X是十六进制表示

    例子

    1 print("{:,}".format(123456))#输出1234,56

    2 print("{a:w^8}".format(a="8"))#输出www8wwww,填充w

    3 print("%.5f" %5)#输出5.000000

    4 print("%-7s3" %("python"))#输出python 3
     
    5 print("%.3e" %2016)#输出2.016e+03,也可以写大E
     
    6 print("%d %s" %(123456,"myblog"))#输出123456 myblog
     
    7 print("%(what)s is %(year)d" % {"what":"this year","year":2016})#输出this year is 2016
     
    8 print("{0}{1}".format("hello","fun"))#输出hellofun,这与CSharp的格式化字符(占位符)相似
     
    9 print("{}{}{}".format("spkk",".","cn"))#输出spkk.cn
     
    10 print("{a[0]}{a[1]}{a[2]}".format(a=["spkk",".","cn"]))#输出spkk.cn
     
    11 print("{dict[host]}{dict[dot]}{dict[domain]}".format(dict={"host":"www","domain":"spkk.cn","dot":"."}))#输出www.spkk.cn
     
    12 print("{a}{b}".format(a="python",b="3"))#输出python3
     
    13 print("{who} {doing} {0}".format("python",doing="like",who="I"))#输出I like python

    格式化输出中,如果要传入一个字典,需要在占位符%后面加上(key值)再加数据类型s或d
    格式化输出中,如果要直接输出一个%号,需要用%来对自己进行转义,即%%

    方法一:

    name = input('请输入姓名:')
    age = int(input('请输入年龄:'))
    course = input('请输入科目:')
    progress = float(input('请输入学习进度:'))
    msg = '''
    -----%s的信息-----
    姓名:%s
    年龄:%d
    科目:%s
    学习进度:%.2f%%
    ----- end -----------
    '''%(name, name, age, course, progress)

    print(msg)

    方法二:

    dic = {'姓名': '小明', '年龄': 20, '科目': 'Python', '学习进度': 10}
    msg = '''
    -----%(姓名)s的信息-----
    姓名:%(姓名)s
    年龄:%(年龄)d
    科目:%(科目)s
    学习进度:%(学习进度)d%%
    ----- end -----------
    '''%dic
    print(msg)

    结果:
    -----小明的信息-----
    姓名:小明
    年龄:20
    科目:Python
    学习进度:10%
    ----- end -----------


    msg = '我叫%s,今年%d,学习进度%.2f%%' % ('小明', 18, 20.555)
    print(msg)
    #%.2f表示浮点数类型占位,只保留2位小数

    format格式化输出,必须按顺序写
    msg = 'my name is {0}, and i am {1} years old'
    print(msg.format('Tom','20'))
    #my name is Tom, and i am 20 years old


    #按关键字名称写,无需按顺序,推荐用这种方法
    msg2 = 'my name is {name}, and i am {age} years old'
    print(msg2.format(age=22, name='Jack'))
    #my name is Jack, and i am 22 years old

    format比%形式有一个优势是当有一个参数需要多次传入时,%只能多次传入,format只需要传入一次关键字名称就可以
    msg = "{name}'s age is {age}, {name}'s job is {job}, {name}'s sex is {sex}"
    print(msg.format(name='Tom',age=20,job='IT',sex='male'))
    Tom's age is 20, Tom's job is IT, Tom's sex is male

    加颜色输出

    一、样式开始
    33[+ 参数1+;+ 参数2+; + 参数3+m
    参数1:代表背景色
    参数2:代表字体色
    参数3:代表显示效果 ,当不需要背景色,也可以用于参数1位置

    二、样式结束
    33[0m

    注意点
    1. 使用完效果后一定要加上33[0m 用来结束效果,否则会影响后面使用
    2. 如果不使用后面的参数则不要添加;
    3. 经过测试07好像只能生效一次

    例子1
    a=input('33[42;31m what is your first name:33[0m')
    b=input('33[42;31;1m what is your second name:33[0m')
    解释:
    第一行参数1是42,对应绿色,参数2是31对应红色,参数3空,代表正常显示
    第二行参数1是42,对应绿色,参数2是31对应红色,参数3是1,代表加深
    ---------------------
    例子2
    print('33[0;32m what is your first name:33[0m')
    print('33[1;32m what is your second name:33[0m')
    print('33[2;32m what is your third name:33[0m')
    解释:
    第一行参数1是0,代表正常显示,参数2是32对应绿色,参数3空
    第二行参数1是1,代表加深,参数2是32对应绿色,参数3空
    第三行参数1是2,代表减弱,参数2是32对应绿色,参数3空

    例子3
    print('33[41;32;5m 闪光33[0m') #闪光字符,在windows里面没有测试出效果,在pycharm里面没有效果,在linux里面测试出效果
    print('07响一声!33[0m') #发出声音 在windows里面测试出效果,在pycharm里面没有效果,在linux里面测试出效果
    print('33[43;34;4m 下划线33[0m')
    print('33[45;36;7m 反显33[0m')
    print('33[47;31;8m 消隐33[0m') #看不到了

    print('33[32;1mMike33[0m is 33[34;1m2133[0m years old')

    name = 'Tom'
    age = 20
    print('33[32;1m%s33[0m is 33[31;1m%s33[0m years old'%(name, age))

    printf("33[31;1m Hello World. 33[0m ");

    颜色如下:
    none = "33[0m"
    black = "33[0;30m"
    dark_gray = "33[1;30m"
    blue = "33[0;34m"
    light_blue = "33[1;34m"
    green = "33[0;32m"
    light_green -= "33[1;32m"
    cyan = "33[0;36m"
    light_cyan = "33[1;36m"
    red = "33[0;31m"
    light_red = "33[1;31m"
    purple = "33[0;35m"
    light_purple = "33[1;35m"
    brown = "33[0;33m"
    yellow = "33[1;33m"
    light_gray = "33[0;37m"
    white = "33[1;37m"

    字背景颜色范围: 40--49 字颜色: 30--39
    40: 黑 30: 黑
    41:红 31: 红
    42:绿 32: 绿
    43:黄 33: 黄
    44:蓝 34: 蓝
    45:紫 35: 紫
    46:深绿 36: 深绿
    47:白色 37: 白色

    输出特效格式控制:
    33[0m 关闭所有属性
    33[1m 设置高亮度
    3[4m 下划线
    33[5m 闪烁
    33[7m 反显
    33[8m 消隐
    33[30m -- 33[37m 设置前景色
    33[40m -- 33[47m 设置背景色

    光标位置等的格式控制:
    33[nA 光标上移n行
    3[nB 光标下移n行
    33[nC 光标右移n行
    33[nD 光标左移n行
    33[y;xH设置光标位置
    33[2J 清屏
    33[K 清除从光标到行尾的内容
    33[s 保存光标位置
    33[u 恢复光标位置
    33[?25l 隐藏光标
    33[?25h 显示光标

  • 相关阅读:
    csu 1141 节能
    WA:ZOJ 1025 Wooden Sticks
    UVa 531 Compromise
    UVa 437 The Tower of Babylon
    UVa 10285 Longest Run on a Snowboard
    在asp.net使用web.config身份验证
    掌握 Ajax,第 6 部分: 建立基于 DOM 的 Web 应用程序
    面向对象编程思想
    一步一步学Remoting之五:异步操作
    Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载)
  • 原文地址:https://www.cnblogs.com/dxnui119/p/9803319.html
Copyright © 2020-2023  润新知