程序与用户交互

什么是与用户交付

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

为什么要与用户交互

为了让计算机能够像人一样与用户沟通交流

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

如何与用户交互

Python之用户交互+运算符_赋值

交互的本质就是输入、输出

输入input:

Python之用户交互+运算符_优先级_02

补充:

在python2中存在一个raw_input功能与python3中的input功能一模一样
在python2中还存在一个input功能,需要用户输入一个明确的数据类型,输入什么类型就存成什么类型

输出print:

Python之用户交互+运算符_运算符_03

输出之格式化输出

什么是格式化输出

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

为什么要格式化输出

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

如何格式输出

使用占位符,如:%s %d {}

'尊敬的%s你好!你xxx月的话费是%d,余额是%d‘

基本运算符

算数运算符

python支持的算数运算符与数学上计算的符号使用是一致的

算数运算符

描述

+

加,两个对象相加

减,两个对象相减

*

乘,两个对象相乘

/

除,相除后得到大的返回值会保留整数与小数部分

//

取整数,相除后得到的返回值只保留整数部分

%

相余,相除后只返回余数

**

幂,取员工数的n次方

比较运算符

比较运算用来对两个值进行比较,返回的是布尔值True或False

比较运算符

描述

==

等于,两个对象相等则返回True,否则返回False

!=

不等于,两个对象不等于则返回False,否则返回True

>

大于

>=

大于等于

<

小于

<=

小于等于

赋值运算符

python语法中除了有=号这种简单的赋值运算外,还支持增量赋值、链式赋值、交叉赋值、解压赋值,这些赋值运算符存在的意义都是为了让我们的代码看起来更加精简

增量赋值

赋值运算符

描述

示例

=

简单赋值运算

x =10

+=

加法赋值运算

x+=1等同与x=x+1

-=

减法赋值运算

y-=1等同与 y=y-1

*=

乘法赋值运算

同上

/=

除法赋值运算

同上

//=

取整除赋值运算

同上

%=

取余赋值运算

同上

**=

幂赋值运算

同上

链式赋值
>>> z=1
>>> y=z
>>> x=y
>>> x,y,z
(1, 1, 1)

链式赋值指的是可以用一行代码搞定这件事

x=y=z=1

 交叉赋值

定义两个变量下x,y

x=1
y=2

将x与y的值交换过来

t=x
x=y
y=t

交叉赋值指的是一行代码可以搞定这件事

x=1
y=2
x,y=y,x #交叉赋值

解压赋值

如果我们想把列表中的多个值取出来依次赋值给多个变量名,可以这么做

>>> nums=[11,22,33,44,55]
>>>
>>> a=nums[0]
>>> b=nums[1]
>>> c=nums[2]
>>> d=nums[3]
>>> e=nums[4]
>>> a,b,c,d,e
(11, 22, 33, 44, 55)

解压赋值指的是一行代码可以搞定这件事

>>> a,b,c,d,e=nums # nums包含多个值,就好比一个压缩包,解压赋值因此得名
>>> a,b,c,d,e
(11, 22, 33, 44, 55)

注意,上述解压赋值,等号左边的变量名个数必须与右面包含值的个数相同,否则会报错

#1、变量名少了
>>> a,b=nums
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)

#2、变量名多了
>>> a,b,c,d,e,f=nums
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 6, got 5)

但如果我们只想取头尾的几个值,可以用*_匹配

>>> a,b,*_=nums
>>> a,b
(11, 22)

ps:字符串、字典、元组、集合类型都支持解压赋值

逻辑运算符

逻辑运算符用于连接多个条件,进行关联判断,会返回布尔值True或False

逻辑运算符

描述

示例

and

逻辑与,用于连接两个条件,两个条件成立时才返回True,但凡有应该条件为False则返回False

3>1 and 4==4 true

or

逻辑或,用于连接两个条件,两个条件但凡有一个成立就返回True,只有在两个条件同时为False时才返回False

1>2 or 3>1 True

not

取反

not 1>3 True

特别注意,返回值。返回值不一定是bool型

把最频繁使用的,做最少计算就可以知道结果的条件放到前面,如果它能短路,将大大减少计算量​

连续多个and

可以用and连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为False,则无需再往右判断,可以立即判定最终结果就为False,只有在所有条件的结果都为True的情况下,最终结果才为True。

>>> 2 > 1 and 1 != 1 and True and 3 > 2 # 判断完第二个条件,就立即结束,得的最终结果为False
False

连续多个or

可以用or连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为True,则无需再往右判断,可以立即判定最终结果就为True,只有在所有条件的结果都为False的情况下,最终结果才为False

>>> 2 > 1 or 1 != 1 or True or 3 > 2 # 判断完第一个条件,就立即结束,得的最终结果为True
True

优先级not>and>or
#1、三者的优先级关系:not>and>or,同一优先级默认从左往右计算。
>>> 3>4 and 4>3 or 1==3 and 'x' == 'x' or 3 >3
False

#2、最好使用括号来区别优先级,其实意义与上面的一样
'''
原理为:
(1) not的优先级最高,就是把紧跟其后的那个条件结果取反,所以not与紧跟其后的条件不可分割

(2) 如果语句中全部是用and连接,或者全部用or连接,那么按照从左到右的顺序依次计算即可

(3) 如果语句中既有and也有or,那么先用括号把and的左右两个条件给括起来,然后再进行运算

成员运算符

成员运算符

描述

in

某个对象包含于另一个对象则返回True

字符串、列表、字典、元组、集合类型都支持解压赋值

not in

某个对象没有包含于另一个对象则返回True

注意:虽然下述两种判断可以达到相同的效果,但我们推荐使用第二种格式,因为not in语义更加明确

>>> not 'lili' in ['jack','tom','robin']
True
>>> 'lili' not in ['jack','tom','robin']
True

身份运算符

身份运算符

描述

is

is比较的是id,两个对象的id相同则返回True

is not

在两个对象的id不同时is not 会返回True

注意:==双等号比较的是value是否相等,而is比较的是id是否相等

#1. id相同,内存地址必定相同,意味着type和value必定相同
#2. value相同type肯定相同,但id可能不同

Python之用户交互+运算符_优先级_04