3、Python用户交互与基本运算符

Python入门 / 2020-08-26

温馨提醒:本文默认使用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号是否相等,前面已经介绍过了,不再赘述!

世间微尘里 独爱茶酒中