05-python的输入与输出
python输入(input)与输出(print)
一、输入(input)
在python3中,input会将接收到的用户输入自动存储为字符串类型
username = input('输入用户名:') # cuihua
print(username) # cuihua
print(type(username)) # <class 'str'>
age = input('输入年龄:') # 18
print(age) # 18
print(type(age)) # <class 'str'>
如果要用接收到的用户输入的数据进行运算时,需要进行类型转化
num1 = input('输入第一个数字:') # 10
num2 = input('输入第二个数字:') # 20
print(type(num1)) # <class 'str'>
print(type(num2)) #<class 'str'>
# 此时接收到的用户输入的数据都是字符串类型,但我们想对这两个数据进行相加,怎么做呢?
# 强制类型转化 --- 顾名思义,可以把一个数据类型转化成另一个数据类型
num1 = int(num1)
num2 = int(num2)
print(type(num1)) # <class 'int'>
print(type(num2)) #<class 'int'>
# 此时,两个字符串类型的数据就被我们转化成了整型数据,就可以相加了
# 验证:
print(num1+num2)
注:将字符串类型转化成整型的时候,只能把由整数组成的字符串转化成整型,其他都会报错
int('111')
# int('11.1') # 会直接报错
# int('11a11') # 会直接报错
二、输出(print)
print('一二三四五')
print('上山打老虎')
print可以向用户打印数据,但是如果要打印一些变量值和字符串的组合该怎么做呢?这就涉及到了字符串的格式化
字符串的格式化输出方法一:%s
name = 'cuihua'
age = 18
print('my name is %s' %name) # 只有一个变量时,可以直接在%后面加变量名
print('my name is %s,my age is %s' %(name,age)) # 当有多个变量时,%后面跟一个元祖,元祖里面写着变量名
# 扩展一:还可以以字典的形式传值(了解即可)
print('my name is %(name)s,my age is %(age)s' %{'name':'xiongda','age':18})
# 扩展二:%s可以接收任意类型的参数
print('%s' %1)
print('%s' %1.1)
print('%s' %'aaa')
print('%s' %[1,2,3])
print('%s' %{'name':'xiongda'})
# 注意:当接收元祖类型的参数时,元祖长度为几,前面的%s占位符就得为几个
字符串的格式化输出方法二:str.format()
该方法兼容性更好
# format后面跟着一个元祖,可以不指定下标,则按照默认顺序传值,也可以通过指定下标的方式传值
# 不指定下标进行传值
print('my name is {},my age is {}'.format('cuihua',18))
# 指定下标进行传值
print('my name is {1},my age is {0}'.format(18,'cuihua'))
# 也可以按照key=value的方式进行传值
print('my name is {name},my age is {age}'.format(age=18,name='cuihua'))
字符串的格式化输出方法三:f格式化
该方法python3.5之后才推出
name = 'cuihua'
age = 18
print(f'my name is {name},my age is {age}') # 注意,需要在字符串前面加f才能使用
三、f格式化字符填充
什么是填充?
当我们指定了字符串最终的长度时,如果现有的字符串没那么长,则使用我们指定的字符串去填满这个长度,这就是填充
name = 'cuihua'
age = 18
# 填充格式{变量名:t填充字符 对齐方式 指定长度}
# 对齐方式:左对齐(<),右对齐(>),居中对齐(^)
# 记忆方法:尖端向哪边,就朝哪边对齐
# 不指定填充字符就默认使用空格填充
print(f'my name is {name:>10},my age is {age:<10}')
# my name is cuihua,my age is 18
# 指定字符就用指定的字符取填充
print(f'my name is {name:*>10},my age is {age:*<10}')
# my name is ****cuihua,my age is 18********
# 指定精度
salary = 123123.123456
print(f'{salary:.2f}') # 指定精度为2位,输出结果为123123.12