02 用户交互

[亡魂溺海] 提交于 2020-03-05 18:19:32

02 用户交互

一、什么是用户交互?

用户交互就是人往计算机中input/输入数据,计算机print/输出结果。

二、为什么要与用户交互?

为了计算机能够像人以言与用户沟通交流。

比如,过去我们去银行取钱,用户需要把账号密码高数柜员,而现在,柜员被ATM取款机取代,ATM机就是一台计算机,所以用户同样需要将账号密码告诉机器,于是我们的程序中必须有相应的机器控制计算机接受用户输入的内容,并且输出结果。

三、如何用用户交互

用户交互的本质就是输入,输出

1、输入input

1.1 python3中的输入

# 注意: input会将用户输入的所有内容都转化成字符串类型
inp_username=input("请输入您的密码:") # "18"
print(inp_username)       # 18
print(type(inp_username)) # <class 'str'>

1.2 python2中的输入与python3中的输入比较(了解)

# 1、在python3中
>>> username=input('请输入您的用户名:')
请输入您的用户名:王毛
>>> password=input('请输入您的密码:')
请输入您的密码:123
>>> print(type(username), type(password))
<class 'str'> <class 'str'>

# 2、在python2中有两个,一种raw_input,另外一种就是input。raw_input等同于python3中的input。而input则是需要用户输入一个明确的数据类型,输入什么类型就存成什么类型。
>>> inp=input('输入什么类型就存成什么类型: ')
输入什么类型就存成什么类型: [1, 2, 3]
>>> type(inp)
<type 'list'>

2、输出print

2.1 只输出一个值

print('hello world')

2.2 一次性输出多个值,值用逗号隔开

print(1, 2, 3)  # 1 2 3

2.3 默认print功能有一个end参数,该参数的默认值为"\n"(代表换行),可以将end参数的值改成任意其它字符

print("aaaa",end='')
print("bbbb",end='&')
print("cccc",end='@')
# 整体输出结果为:aaaabbbb&cccc@

3、输出之格式化输出

3.1 什么是格式化输出?

把一段字符串里面的某些内容替换掉之后在输出就是格式化输出。

3.2 为什么要格式化输出?

我们经常会输出既有某种固定格式的内容,比如'亲爱的xxx你好!你xxx月的话费是xxx,余额是xxx‘,我们需要做的就是将xxx替换为具体的内容。

3.3 如何用格式化输出?

3.3.1 格式化输出之% (最古老)
# 1、按照位置顺序传值
# 多个值需要加括号,%s与值一一对应,多一个不行,少一个不行
res = 'my name is %s' % 'egon'
print(res)  # my name is egon

res1 = 'my name is %s, my age is %s' % ('egon', 18)
print(res1)  # my name is egon, my age is 18


# 2、按照字典形式传值
res2 = 'my name is %(name)s, my age is %(age)s' % {'name': 'egon', 'age': 18}
print(res2)  # my name is egon, my age is 18


# 3、%s与%d的区别
# %s可以接受任意类型(推荐)
res3 = 'my age is %s' % '18'
print(res3)  # my age is 18

res4 = 'my age is %s' % 18
print(res4)  # my age is 18

# %d只能接收int类型的格式化,float类型会舍去小数点后的分数位
res5 = 'my age is %d' % 18
print(res5)  # my age is 18

res6 = 'my age is %d' % 18.1121212
print(res6)  # my age is 18
3.3.2 格式化输出之str.format (兼容性好,2.6版本推出,兼容2版本与3版本,推荐使用)
# 1、按照位置顺序传值
# 一个值
msg = 'my name is {}'.format('egon')
print(msg)  # my name is egon
# 多个值方式一
msg1 = 'my name is {}, my age is {}'.format('egon', 18)
print(msg1)  # my name is egon, my age is 18
# 多个值方式二
msg2 = 'my name is {0}, my age is {1}'.format('egon', 18)
# 多个值方式三
print(msg2)  # my name is egon, my age is 18
msg3 = 'my name is {0} {0} {0}, my age is {1} {1} {1}'.format('egon', 18)
print(msg3)  # my name is egon egon egon, my age is 18 18 18

# 2、按照key=value传值
# 方式一
msg4 = 'my name is {name}, my age is {age}'.format(name='egon', age=18)
print(msg4)  # my name is egon, my age is 18
# 方式二
msg5 = 'my name is {name} {name} {name}, my age is {age} {age} {age}'.format(age=18, name='egon')
print(msg5)
3.3.3 格式化输出之f'{}' (3.5版本才开始支持)
print(f'我的名字是{name},我的年龄是{age}')    # 我的名字是egon,我的年龄是18
3.3.4 以上3种格式化速度对比

f'{}' > str.format > %

3.3.5 填充与格式化str.format(了解知识)
# 先取到值,然后在冒号后设定填充格式:[填充字符][对齐方式][宽度]
# *<10:左对齐,总共10个字符,不够的用*号填充
print('{0:*<10}'.format('开始执行')) # 开始执行******

# *>10:右对齐,总共10个字符,不够的用*号填充
print('{0:*>10}'.format('开始执行')) # ******开始执行

# *^10:居中显示,总共10个字符,不够的用*号填充
print('{0:*^10}'.format('开始执行')) # ***开始执行***
3.3.6 精度与进制(了解知识)
print('{salary:.3f}'.format(salary=1232132.12351))  #精确到小数点后3位,四舍五入,结果为:1232132.124

print('{0:,}'.format(99812939393931))  # 千分位格式化,结果为:99,812,939,393,931

print('{0:b}'.format(123))  # 转成二进制,结果为:1111011
print('{0:o}'.format(9))    # 转成八进制,结果为:11
print('{0:x}'.format(15))   # 转成十六进制,结果为:f
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!