Python_字符串格式化

#字符串格式化
# a=3
# b=5
# print(a,"+",b,"=",a+b)
# print(a+"+"+b+"="+(a+b))#报错,TypeError: unsupported operand type(s) for +: 'int' and 'str'
# print(str(a)+"+"+str(b)+"="+str(a+b))#可以实现3+5=8,但是麻烦
#解决方案1 使用%号
# print("%s+%s=%s"%(a,b,a+b))
#%s表示字符串,%d表示整数,%f表示浮点类型的数字
# print("我叫%s,你叫%s,他叫%s,今年是%s年"%("吴彦祖","彭于晏","周杰伦","2020"))
#前后的参数的数量必须一致
# print("我叫%s,你叫%s,他叫%s,今年是%s年"%("吴彦祖","彭于晏","周杰伦"))#TypeError: not enough arguments for format string
# print("我叫%s,你叫%s,他叫%s"%("吴彦祖","彭于晏","周杰伦","2020"))#TypeError: not all arguments converted during string formatting
# print("我叫%s,你叫%s,他叫%s,今年是%d年"%("吴彦祖","彭于晏","周杰伦","2020"))#TypeError: %d format: a number is required, not str
#宽度,指定的是下限,默认右对齐,大于指定值取全部
# print("我叫%5s,你叫%5s,他叫%5s,今年是%5s年"%("吴彦祖","彭于晏","周杰伦","2020"))#我叫 吴彦祖,你叫 彭于晏,他叫 周杰伦,今年是 2020年
# print("我叫%s,你叫%s,他叫%5s,今年是%s年"%("吴彦祖","彭于晏","周杰伦北京一伦","2020"))
#左对齐加负号
# print("我叫%-5s,你叫%-5s,他叫%-5s,今年是%-5s年"%("吴彦祖","彭于晏","周杰伦","2020"))#我叫吴彦祖 ,你叫彭于晏 ,他叫周杰伦 ,今年是2020 年
#补齐,默认补空格,%d可以补0,%s不可以,都不可以补其他字符
#可以在%的后面添加数字n,表示至少显示n位,不足时用空格补齐,超过n则正常显示所有字符
#对于数字而言,可以在左侧补0,%0nd,n是任意自然数
# print("我叫%s,你叫%s,他叫%5s,今年是%05d年"%("吴彦祖","彭于晏","周杰伦","2020"))#TypeError: %d format: a number is required, not str
# print("我叫%s,你叫%s,他叫%5s,今年是%05d年"%("吴彦祖","彭于晏","周杰伦",2020))#我叫吴彦祖,你叫彭于晏,他叫 周杰伦,今年是02020年
# print("我叫%s,你叫%s,他叫%5s,今年是%5d年"%("吴彦祖","彭于晏","周杰伦",2020))
#%f,浮点型,%m.nf,m表示最少显示多少位,n表示小数位数
# print("%6.2f"%(3.1415))# 3.14
# print("%6.2f"%(300089769.1415))#300089769.14

#解决方案2 format
# print("我叫{},你叫{},他叫{}".format("吴彦祖","彭于晏","周杰伦"))#我叫吴彦祖,你叫彭于晏,他叫周杰伦
#后面的参数可以比前面多,但是不能少
# print("我叫{},你叫{},他叫{},今年是{}".format("吴彦祖","彭于晏","周杰伦"))#IndexError: tuple index out of range
# print("我叫{},你叫{},他叫{},今年是{}".format("吴彦祖","彭于晏","周杰伦",2020,2009))#IndexError: tuple index out of range
# print("我叫{},你叫{},他叫{},今年是{}".format("吴彦祖","彭于晏","周杰伦","2020"))#我叫吴彦祖,你叫彭于晏,他叫周杰伦,今年是2020
#宽度,字符默认左对齐,数字默认右对齐,不足补空格
# print("我叫{:5},你叫{:5},他叫{:5},今年是{:5}".format("吴彦祖","彭于晏","周杰伦",2020))#我叫吴彦祖 ,你叫彭于晏 ,他叫周杰伦 ,今年是 2020
# print("我叫{:5},你叫{:5},他叫{:5},今年是{:5}".format(吴彦祖,"彭于晏","周杰伦",2020))#NameError: name '吴彦祖' is not defined
#补齐方式,大于号右对齐,小于号左对齐,^括号居中对齐,在冒号和方向符之间可以补任意字符和数字
# print("我叫{:>5},你叫{:<5},他叫{:^5},今年是{:<5}".format("吴彦祖","彭于晏","周杰伦",2020))#我叫 吴彦祖,你叫彭于晏 ,他叫 周杰伦 ,今年是2020
# print("我叫{:1>5},你叫{:&<5},他叫{:*^5},今年是{:*<5}".format("吴彦祖","彭于晏","周杰伦",2020))#我叫11吴彦祖,你叫彭于晏&&,他叫*周杰伦*,今年是2020*
#tuple,可以使用下标来实现
# print("我叫{0:1>5},你叫{2:&<5},他叫{1:*^5},今年是{4:*<5}".format("吴彦祖","彭于晏","周杰伦",2020,2021))#我叫11吴彦祖,你叫周杰伦&&,他叫*彭于晏*,今年是2021*
#本来就想显式{},怎么办?{{}}
# print("我叫{},你叫{{:<5}},他叫{}".format("吴彦祖","彭于晏","周杰伦"))#我叫吴彦祖,你叫{:<5},他叫彭于晏
# print("我叫{},你叫{{{:<5}}},他叫{}".format("吴彦祖","彭于晏","周杰伦"))#我叫吴彦祖,你叫{彭于晏 },他叫周杰伦
#方案2的另外一种写法 f表示,python3.6以上的版本才支持,字符串默认左对齐,数字默认右对齐
# name1="吴彦祖"
# name2="彭于晏"
# age=24
# # print(f"我叫{name1},你叫{name2}")#我叫吴彦祖,你叫彭于晏
# print(f"我叫{name1:^7},你叫{name2:7},年龄{age:7}")#我叫 吴彦祖 ,你叫彭于晏 ,年龄 24
# print(f"我叫{name1:1^7},你叫{name2:&>7},年龄{age:a<7}")#我叫11吴彦祖11,你叫&&&&彭于晏,年龄24aaaaa

#全局变量和局部变
a=3#全局变量,程序任何代码都可以使用
# def fun1():
# b=6#局部变量,只能在函数内部使用
# print(b)
# # print(fun1())#返回None
# print(b)#NameError: name 'b' is not defined

# def fun1():
# global b#声明为全局变量
# b=6#局部变量,只能在函数内部使用
# # print(b)
# print(fun1())#返回None
# print(b)#NameError: name 'b' is not defined,必须先调用一次给b赋值

def fun1():
global a#声明为全局变量
a=10#局部变量,只能在函数内部使用
# print(b)
fun1()
print(a)#a的值变为10
print(a+5)
posted @ 2020-10-07 20:06  幸福一家  阅读(155)  评论(0编辑  收藏  举报