python入门之用户交互和格式化输出
基本输入input()
python3中使用input()
函数用来接收用户通过键盘输入的数据,返回一个字符串类型的变量
name = input("请输入用户名:") # name用来接收input收到用户输入的数据
print(name)
即使用户输入的是数字,input()函数返回的变量依旧是字符串数据类型的变量
age = input("请输入年龄:") # 键盘输入 20
print(age, type(age))
# 输出:20 <class 'str'>
补充:
# python2中的raw_input() 和 input()
- python2中的raw_input()函数的功能和用法和python3中的input()函数完全相同;
- python2的input()会保留用户输入的数据类型,即输入int返回结果是int,输入列表返回列表,如果用户输入数据格式不对,会报错。
# 从用户是上帝的角度出发,python3直接优化了input()函数,只返回字符串类型数据
基本输出print()
python中使用print()
函数可以打印输出任何数据类型的变量。
同时打印多个变量,用逗号隔开
name = "jack"
age = 20
print(name) # 打印:"jack"
print(name, age) # 打印:"jack" 20
自定制多个变量值的隔开方式,使用sep参数
# 可以在print()中使用参数sep=""
name = "jack"
age = 20
print(name, age) # 打印:"jack" 20
print(name, age, sep=",") # 打印:"jack",20
设置每行打印结束的标识符,使用end参数
name = "jack"
age = 20
print(name, end=',')
print(age)
# 输出:"jack", 20 两次打印在一行显示
格式化打印
格式化打印的三种基本方式:
# 三种基本格式化打印方法
#1 %
#2 str.format
#3 f-String
%(占位符)
# %占位符 是目前所有python版本都支持的格式化打印方式
#1 按照位置与%s一一对应,少一个不行,多一个也不行
res = 'my name is %s and i am %s' %('egon', '18')
res2 = 'my name is %s' % 'egon'
# output
# res = my name is egon and i am 18
# res2 = my name is egon
#2 按照字典的形式传值,打破位置的限制
res = 'my name is %(name)s i am %(age)s' %{'age':'18', 'name':'egon'}
# output
# res = my name is egon and i am 18
#3 补充:%s可以接收任意类型, %d只能接收int
#
# print('my age is %s' %18)
# print('my age is %s' %[1,23])
# print('my age is %s' %{'a':333})
# print('my age is %d' %18) # %d只能接收int
# print('my age is %d' %"18") # 报错
#4 打印符号 '%'
res = '成功的可能性是 %s%%' % 90
# res = 成功的可能性是 90%
str.format
# format的字符串的内置方法,好处:兼容性好;性能比%较优
#1 按照位置传值
res='我的名字是 {} 我的年龄是 {}'.format('egon',18)
#2 按照索引传值
res='我的名字是 {0}{0}{0} 我的年龄是 {1}{1}'.format('egon',18)
#output:我的名字是 egonegonegon 我的年龄是 1818
#3 打破位置的限制,按照key=value传值
res = 'my name is {name} and i am {age}'.format(age=18, name='egon')
#output:my name is egon and i am 18
# 补充知识:
#3 填充与格式化
# 语法: 先取到值,然后在冒号后设定填充格式:[填充字符][对齐方式][宽度]
#3.1 左对齐
res = '{0:*<10}'.format('打印内容') # 冒号前必须是0,也可省略0,且不能有空格
# output: 打印内容******
#3.2 右对齐
res = '{0:*>10}'.format('打印内容')
# output: ******打印内容
# 3.3 居中
res = '{0:*^10}'.format('打印内容')
# output: ***打印内容***
#4 精度与进制
print('{salary:.3f}'.format(salary=1232132.12351)) #精确到小数点后3位,四舍五入,结果为:1232132.124
print('{0:b}'.format(123)) # 转成二进制,结果为:1111011
print('{0:o}'.format(9)) # 转成八进制,结果为:11
print('{0:x}'.format(15)) # 转成十六进制,结果为:f
print('{0:,}'.format(99812939393931)) # 千分位格式化,结果为:99,812,939,393,931
f-String
# python3.5以后才推出,用于插值计算;性能更优
# python3.6后推荐使用,但是用需要注意python解释器版本
#1 格式化插值
name = 'egon'
age = 18
res = f'我的名字是{name} 我的年龄是{age}'
# 支持花括号内计算和函数使用
age = 18
res = f'我的年龄是{age}, 去年我的年龄是{age-1}'