03-04 python语法入门之用户交互

一、什么是用户交互?

用户交互就是人往计算机中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 如何用格式化输出?

格式化输出之% (最古老)
# 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

# 4、使用百分号格式化字符串时,百分号有特殊意义,比如你需要显示%s,你必须在百分号前再加一个%号,进行转义。前面的百分号表示对后面的百分号转义。
print('成功的概率 %s%%' % 97.7)  # 成功的概率 97.7%
格式化输出之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、填充与格式化str.format(了解知识)
# 先取到值,然后在冒号后设定填充格式:[填充字符][对齐方式][宽度]
# 用法:举例{0:*<10},0表示传的值'开始执行,*填充内容,<表示左对齐,10取出来的值,长度小于10,填充指定的填充内容*。
# *<10:左对齐,总共10个字符,不够的用*号填充
print('{0:*<10}'.format('开始执行')) # 开始执行******

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

# *^10:居中显示,总共10个字符,不够的用*号填充
print('{0:*^10}'.format('开始执行')) # ***开始执行***


# 4、str.format之精度(了解知识)
# 注意:举例.3f表示精确到小数点后三位,如果值是1.2那么后面小数点后不够的位数用0补齐。
print('{salary:.3f}'.format(salary=1232132.12351))  # 精确到小数点后3位,四舍五入,结果为:1232132.124

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


# 5、进制(了解知识)
print('{0:b}'.format(123))  # 转成二进制,结果为:1111011
print('{0:o}'.format(9))    # 转成八进制,结果为:11
print('{0:x}'.format(15))   # 转成十六进制,结果为:f
格式化输出之f'{}' (3.5版本才开始支持)
name = 'egon'
age = 18
print(f'我的名字是{name},我的年龄是{age}')    # 我的名字是egon,我的年龄是18

# 如果是字符串需要显示'我的名字是{egon}',这个时候{}外面就需要2个{}包裹。
print(f'我的名字是{{{name}}}')       # 我的名字是{egon}
以上3种格式化速度对比

f'{}' > str.format(推荐使用) > %

posted @ 2020-03-14 23:27  给你加马桶唱疏通  阅读(162)  评论(0编辑  收藏  举报