与用户交互
为什么交互
我们发明计算机的目的是让计算机帮我们工作。ATM取代了柜员,当我们取款时,被要求要求输入卡号和密码以及存取款的金额。这就是交互。
python是如何交互的
print('-'*100)
input('请输入姓名:')
print('*' *100)
请输入你的姓名:nick
************************************
我们如何去写一个ATM登陆系统?
name=input('请输入姓名:')
pwd=input('请输入密码:')
print(type(name))
print(type(pwd))
请输入姓名:wuxi
请输入密码:213
<class 'str'>
<class 'str'>
通过上面的print结果,我们发现input只接收字符串类型的值,不管我们在input中输入的是数字、列表还是其他。
python2和pyhton3的交互(熟悉)
name=raw_input('请输入姓名:')
pwd=raw_input('请输入密码:')
print(type(name)) #'str'
print(type(pwd)) #'str'
- 得知,python2的raw_input和python3的input一样
x=input('username:')#必须输入明确的数据类型,输入什么类型都接收什么类型。输入'wuxi'而不是wuxi,否则报错
- python3的交互比Python2的交互更合理。在python3中的交互使用麻烦了,因为输入年龄还要转换成字符串。如果是python2,还需用户自己输入数据类型。
格式化输出
占位符
在程序中会出现要求用户输入信息、打印成固定格式的场景。
比如要求用户输入'用户名'和年龄,然后打印为一下格式
my name is wuxi,my age is 23
用逗号将字符串拼接,只能把姓名和年龄放在末尾,不能放到指定位置。并且数字要经过str的转换才能和字符串拼接。很麻烦。
age =19
print('my name is wuxi,my age is '+str(age))
my name is wuxi ,my age is23
age =23
print('my name is xxx,my age is',age)
my name is xxx,my age is 23
name ='wuxi'
age =19
print('my name is '+name' my age is'+str(age))
my name is nick my age is 19
上述的方法越看越变扭。这需要用到占位符,比如%s(针对所有数据类型)、%d(针对数据类型)
name ='wuxi'
age =23
print(‘my name is %s my age is %s’ %(name,age))
my name is nick my age is 23
age =19
print ('my age is %d'%age )
format格式化(了解)
这是一个积累的格式化方法。需要在句子后面加上一大堆参数。不如使用占位符或者下面的f-string格式化。
f-string格式化(掌握)
相比较占位符的方式,Python3.6新增的f-string格式化方式,比较简单易懂。推荐使用该方式。
name ='wuxi'
age =23
print(f'hello,{name}.you are {age}.')
hello wuxi .you are 23.
age =23
print (f'{age*2}')
46
salary=6.666
print(f'{salary:.2f}')
6.67
基本运算符
-
算术运算符(掌握)
print(1+2)
x=10
y=20
res=x+y
print(res)
有零有整除,得到一份浮点
print(10/3)
3.333333
地板除,只取整数部分
print(10/3)
3
%:取余
print(10%3)
1
**,幂
print(10**3)
1000
-
比较运算符(熟悉)
pwd='123'
print(pwd !='123')#false
print(pwd =='123')#True
11=[1,'a',3]
12=[3]
print(11<12)#false
-
赋值运算符(掌握)
age =23
age =age +1
print(age)
24
age =23
age +=1
print(age)
24
age =23
age *= 10
print(age)
230
逻辑运算符(掌握)
逻辑运算符包括:and or not
print(3>3 and 1>2 or 2>1)#false
从左到右的方式找到逻辑运算符,找到逻辑运算符的左边,左边成立,再去找到逻辑运算符的右边
身份运算符(掌握)
身份运算用于比较两个对象的存储单元。
身份运算符包括is和is not
is和的区别:is用于判断两个变量引用对象是否在同一内存中;==用于判断引用变量的值是否相等
x=257
y=x
z=257
print(f'x is y:{x is y}')#x is y:true
print(f'x == y:{x ==y}')# x= =y:true
print(f'x is z:{x is z}')#x is z:false
print(f'x == z:{x ==z}')#x ==z:true
Python运算符的优先级(掌握)
相当于数学中的先乘后除,优先级更高的,用括号括起来就行了
链式赋值(掌握)
a=10
b=10
c=10
d=10
print(f'a:{a},b:{b},c{c},d{d}')#a:10 ,b10,c10,d10
a=b=c=d=10
print(f'a:{a},b:{b},c{c},d{d}')
a:10,b:10,c:10,d:10
交叉赋值(掌握)
x=100
y=200
temp=x
x=y
y=temp
print(f'x:{x}')#x:200
print(f'y:{y}')#y:100
解压缩(掌握)
给出一个列表,如何一次取出多个值?
name _list=['wuxi','zdq','wrqrw',]
x,y,z=name_list
print(f'x:{x},y{y},z{z}')#x:wuxi,y:zdq,z:wrqrw
有时候我们解压缩的值可能不是我们想要的,那么可以使用下划线。万能的下划线
name_list=['wuxi','zdq','zdq2','zdq3']
x,y,z,a=name_list
x, , z ,=name_list#_告诉计算机不要了,不能以_开头
name_list=['wuxi','zdq','zdq2',’zdq3‘]
x, y, _, _, =name_list
写程序是用来创造价值的,Python追求的简洁性。因此字典也是可以得,但是字典解压缩的是key.
info ={'name':'wuxi','age':'23'}
x,y=info
print(x,y)#name age