温馨提醒:本文默认使用3.X版本的Python
一、用户交互概念
1.1、什么是用户交互?
为用户提供输入数据的方式,并将数据处理结果展示给用户,这种就叫用户交互。比如说我在笔记本电脑输入这段话,屏幕上显示出来这段文字,这就是用户交互的输入与输出!
1.2、为何要有用户交互?
为了让机器具备和人一样的可交流的功能,提高人对程序、机器的可用性!
1.3、如何操控用户交互?
用户交互分为输入与输出,具体将由下面的交互体现展示!
接收用户输入
Python3:input,input会将用户输入的内容存成字符串类型并保存起来,这是low的方式,后面有高级货色;int能将纯数字的字符串转成整数型!
Python2.7:input(输入什么数据类型就存成什么数据类型)、raw_input(与Python3的input一样)
二、用户交互体现
2.1、接收用户输入
2.1.1、python3:input
input将用户输入的内容存成字符串类型并保存为变量,后续随着学习深度会更新进阶版!
>>> input("please input your name: ")
please input your name: sanxi
'sanxi'
这有点闷,给它加点料!(在pycharm操作)
name = input("please input your name: ")
print("hello,",name)
然后run代码得到结果!有点意思!
please input your name: sanxi
hello, sanxi
2.2、字符串格式化输出:
2.2.1、%:
%伴随着Python的诞生而诞生,属于骨灰级玩家级别了(虽然逐渐被取代失去了存在感)!
%s可以接受所有字符类型,%d只能接受整数型!
下面实例呢,%括号里的值只能跟前面的%s一一对应,不能多也不能少!
name_of_sanxi = "my name is %s,my hobby is %s" %("sanxi","chuiniubi")
print(name_of_sanxi)
#执行后的结果是
my name is sanxi,my hobby is chuiniubi
Process finished with exit code 0
这样有问题,你得记住位置和数量,有点烦!其实可用字典形式突破位置传值!看下面演示!
name_of_sanxi = "我是谁? %(name)s,我在哪里? %(where)s,我在干什么? %(do)s" %{"do":"chuiniubi","name":"sanxi","where":"earth"}
print(name_of_sanxi)
#执行得到结果
我是谁? sanxi,我在哪里? earth,我在干什么? chuiniubi
#用字典形式需要使用花括号{},而不是小括号!这样一来就无需记住值的位置了!
2.2.2、str.format
Python2.6后引入
这个是花括号里不填参数的方式,这样的话和%一样,要一一对应!
name_of_sanxi = "我是谁?{},我在哪里?{},我在干什么?{}".format("sanxi","diqiu","chuiniubi")
print(name_of_sanxi)
#执行后的结果
我是谁?sanxi,我在哪里?diqiu,我在干什么?chuiniubi
以下是键值型,可突破位置限制,也比%s写起来简短一些
name_of_sanxi = "我是谁?{name},我在哪里?{location},我在干什么?{do}".format(name='sanxi',do='zhuangbi',location='earth')
print(name_of_sanxi)
#执行得到结果
我是谁?sanxi,我在哪里?earth,我在干什么?zhuangbi
2.2.3、f''
Python3.5版本后引入
name = input('please input your name: ')
age = input('please input your age: ')
format = f'my name is {name},my age is {age}'
print(format)
#执行后得到结果如下
please input your name: sanxi
please input your age: 16
my name is sanxi,my age is 16
花括号内的内容可以被当做表达式来使用,还有填充用法,四舍五入
三、基本运算符
10 // 3只保留整数部分 10 / 3 结果带小数
10 % 3 取余取模
10 ** 3 次方
3.1、算数运算符
3.1.1、什么是算数运算符?
加+,减-,乘*,除/,取余%,次方**,//除后只保留整数部分
3.1.2、为何用它?
为了进行数学运算
3.1.3、如何用?
>>> 1+3
4
>>> 4-1
3
>>> 3*6
18
>>> 15/3
5.0
>>> 14%3
2
>>> 2**5
32
>>> 10//3
3
3.2、赋值运算符
3.2.1、=
等号是变量赋值用,不做过多介绍!
3.2.2、增量赋值
比如你游戏里人物升级了,系统需要给你的等级+1
一般情况下是这样操作
>>> level=5
>>> level=level+1
>>> level
6
Python有专门的赋值方式来应对
>>> level += 1
>>> level
7
#少写了一些字符!不过需要注意的是,+=这两个符号一定要挨在一起,不然就是语法错误!
3.2.3、链式赋值
就跟烤肉串一样,将多个变量串在一起赋值!
>>> a=b=c=10
>>> print(a,b,c)
10 10 10
#链式赋值会增加对应变量名数量的引用次数,如上则是10的被引用次数为3!
3.2.4、交叉
好理解!比如a=12,b=45,我要把他们俩的值互换就是交叉赋值!
a=12
b=45
a,b=b,a
print(a,b)
45 12
3.2.5、解压赋值
顾名思义,将一个压缩包里面的东西释放出来。在Python上就是将一个列表或字典里的元素释放并为之赋值!
salary=[5400,6200,6900,8000,10000]
s1,s2,s3,s4,s5=salary
print(s1,s2,s3,s4,s5)
5400 6200 6900 8000 10000
#以上解压赋值需要变量跟数量跟列表元素数量相对应!
如果只想取前后指定数量,则如下所示:
#前二
s1,s2,*_=salary
print(s1,s2)
5400 6200
#后二
*_,s1,s2=salary
print(s1,s2)
8000 10000
#星号会将没有关联的值存成列表,下划线则收录没有对应的变量名
print(_)
[5400, 6200, 6900]
解压字典默认解压出来的是字典的key
salary={'m1':5400,'m2':6200,'m3':6900,'m4':8000,'m5':10000}
s1,s2,s3,s4,s5=salary
print(s1,s2,s3,s4,s5)
m1 m2 m3 m4 m5
3.3、比较运算符
用于比较符号左右两侧数值,符号代表什么意思不用解释了吧!
>,>=,<,<=,==,!=
3.4、逻辑运算符
3.4.1、什么是逻辑运算符?
用于连接多个条件语句组的运算符,如:我开始学习Python了 ==并且== 我喜欢上了Python
3.4.2、为什么要用逻辑运算符?
用于组成更复杂的语句
3.4.3、如何使用逻辑运算符
使用前得先了解一下Python中数据的可变与不可变类型!
-
可变型:值改变,ID不变。如字典、列表等容器类型!
- 如同一个礼盒,里面装着钢笔、铅笔;我不管你里面放了什么,礼盒依然是礼盒!因为它内存地址压根没变!
- 注意:字典中,value是可以变的,key必须不可变。
-
不可变:值改变,ID改变!
- 当此类型值发生改变时,实际上是新建内存空间并重新关联,内存地址变了那么ID一定会变!就好像你起个外号叫逗逼并赋予给张三,后面你发现李四比他还逗,你于是就把李四叫做逗逼了!这实际是不同的人,因此内存地址已经变了,ID就会变。
理解了就进行逻辑运算符not、and、or的讲解!
3.4.4、逻辑运算符有三
not、and、or
3.4.5、运算符优先级
not > and > or
3.4.5.1、not
把紧跟其后的那个条件结果(不可变类型)取反,类似bash上感叹号!取反
>>> not 1 > 3
True
3.4.5.2、and
与运算,用来链接左右两个条件,两个都为真最终结果才为真。
>>> 1 > 3 and 4 > 2
False
#以上左假右真,最终为假
>>> 5 > 1 and 6 > 3
True
#以上均为真,最终为真。
3.4.5.3、or
或运算,左右俩条件,只要有一个为真,最终结果就是真!
>>> 5 > 1 or 6 < 3
True
3.4.6、短路运算
如或运算,当出现一条很长的逻辑运算语句时,只要第一个符合要求,后面的不再继续运算,如第一个不符合则开始算下一个如此推算下去;这样就节约了资源,因为只要其中有一条是真,则整条结果就是真,没必要继续算下去!在哪个位置结束运算就返回哪个位置的值!
3.5、成员运算符:in
判断一个字符串是否存在于另一串中
>>> "sanxi" in "sanxi666"
True
>>> "hello" in "sanxi666"
False
是否存在于列表中,
>>> gz=[666,233,6868]
>>> 233 in gz
True
>>> 244 in gz
False
字典则是判断key是否存在
>>> gz={'cantontower':666,'zhujiang':233}
>>> 666 in gz
False
>>> 'cantontower' in gz
True
not in与上述in相反,不再演示!
3.6、身份运算符:is
比较左右两侧的变量名所对应的值的ID号是否相等,前面已经介绍过了,不再赘述!