【一】什么是与用户交互
-
交互的本质就是输入与输出
-
用户交户就是人往计算机中input/输入数据,print/输出数据
【二】为什么要与用户交互
-
为了让计算机像人一样与用户沟通交流
-
比如
-
以前上银行取钱就是去人工柜台把卡给人家、密码告诉人家然后取钱
-
现在用户直接去ATM自动取款机里面取钱
-
ATM机就像一台计算机,用户也必须要把账号密码告诉ATM机
-
所以我们的程序中必须有相应的机制来控制计算机接收用户输入的内容
-
并且输出结果
-
【三】如何与用户交互
【1】输入(input)
-
在python3中input功能就会等待用户的输入
-
用户输入一些内容,用户按下回车键后,input函数会返回用户输入的内容
-
input接受的所有数据类型都是str类型
-
-
input接收的所有类型都是str类型
username = input("用户的名字>>>>") password = input("用户的密码>>>>") print(username,type(username))#<class 'str'> print(password,type(password))#<class 'str'>
-
然后赋值给等号左边的变量名
username = input("请输入你的用户名:")#请输入你的用户名:Dream #点回车键 #username = "Dream"#(输出的Dream就是username的值) password = input("请输入你的密码:") #请输入你的密码:521 #点回车键 #password = "521"#(输出的的521就是password的值)
【2】输出(print)
(1)简单字符串
-
print函数用于控制台输出信息,你可以用print函数显示函数运行的结果和提示信息等
print("Hello word!")#控制台上显示的是Hello word! #输出简单的字符串
(2)多个变量输出
-
print函数可以输出多值,用逗号隔开。输出时,各个值之间默认使用空格分隔
name = "Tom" age = 22 print("姓名:",name,"年龄:",age)#姓名: Tom 年龄: 22
(3)默认end参数
-
print函数也有一些可选参数,例如end参数指定输出的结尾字符,默认为换行符"/n"(代表换行)。
#end参数示例 print("Hello",end="")#"空格"这里面可以改成任意字符 print(",Word!")#Hello Word!
-
可以将end参数的值改成任意其它字符
print("I",end="不") print("Love",end="¥") print("you",end="爱¥")#I不Love¥you爱¥
【四】运算符
-
参考网站(菜鸟教程):Python 运算符 | 菜鸟教程
【1】算数运算符
-
python支持的算数运算符与数学上计算的符号使用是一致的
-
我们以x=9,y=2为例来依次介绍它们
-
【1】加法运算符 +
x = 9 y = 2 result = x + y print(result) # 输出:11
【2】减法运算符 -
x = 9 y = 2 result = x - y print(result) # 输出:7
【3】乘法运算符 *
x = 9 y = 2 result = x * y print(result) # 输出:18
【4】除法运算符 /
x = 9 y = 2 result = x / y print(result) # 输出:4.5
【5】取整除运算符 //
x = 9 y = 2 result = x // y print(result) # 输出:4
【6】求余数运算符 %
x = 9 y = 2 result = x % y print(result) # 输出:1
【7】幂运算符 **
x = 9 y = 2 result = x ** y print(result) # 输出:81
【2】比较运算符
-
比较运算符用来对两个值进行比较,返回的是布尔值Ture或False
【1】相等运算符==
x = 9 y = 2 result = x == y print(result) # 输出:False
【2】不等运算符!=
x = 9 y = 2 result = x == y print(result) # 输出:False
【3】大于运算符 >
x = 9 y = 2 result = x > y print(result) # 输出:True
【4】小于运算符 <
x = 9 y = 2 result = x < y print(result) # 输出:False
【5】大于等于运算符 >=
x = 9 y = 2 result = x >= y print(result) # 输出:True
【6】小于等于运算符 <=
x = 9 y = 2 result = x <= y print(result) # 输出:False
[3]赋值运算符
【1】增量赋值
(1)介绍
-
增量赋值运算符用于将变量与右侧的表达式相结合,并将结果赋值给变量。
(2)使用
x = 9 y = 2 # 等同于 x = x + y x += y#下x += y等同于x + y = x它表示将变量 x 的值与 y 相加,并将结果赋值给 x。 print(x) # 输出:11
【2】链式赋值
(1)介绍
-
链式赋值允许在单一语句中给多个变量赋值。这样可以减少代码行数,提高代码的紧凑性。
(2)使用
a = b = c = 5 #a = b = c = 5 表示同时给变量 a、b、c 赋值为 5。 print(a, b, c) # 输出:5 5 5
【3】交叉赋值
(1)介绍
-
交叉赋值允许在不使用临时变量的情况下,交换两个变量的值。
(2)使用
x = 9 y = 2 # 交叉赋值 x, y = y, x #x, y = y, x 表示将变量 x 的值赋给 y,同时将变量 y 的值赋给 x,实现了两个变量值的交换。 print(x, y) # 输出:2 9
【4】解压赋值
(1)介绍
-
解压赋值允许将一个可迭代对象(如列表、元组等)的值解压到多个变量中,以便进一步使用。
(2)使用
coordinates = (3, 5) # 解压赋值 x, y = coordinates #x, y = coordinates 表示将元组 coordinates 中的值解压到变量 x 和 y 中,以便分别使用。 print(x, y) # 输出:3 5
【4】逻辑运算符
-
逻辑运算符用来连接多个条件,进行关联判断,并返回布尔值True或False。
-
常用的逻辑运算符有与(and)、或(or)、非(not)。
【1】与运算符(and)
-
与运算符and在两个条件都为True时,返回True;如果其中一个条件为False,则返回False
x = 5 y = 87 result=(x>0)and(y>0) #(x > 0) and (y > 0) 表示同时判断 x > 0 和 y > 0 是否都为 True,因为两个条件都满足,所以结果为 True。 print(result)#True
【2】或运算符(or)
-
或运算符or在两个条件中有一个是True,返回True;如果两个条件都为False,则返回False
x = 5 y = 87 result = (x > 0) or (y < 0) #(x > 0) or (y > 0) 表示判断 x > 0 或者 y < 0 至少有一个条件为 True,因为 x > 0 为 True,所以结果为 True。 print(result)#True
【3】非运算逻辑(not)
-
非运算逻辑用于对一个条件取反,条件为True,则返回False;如果条件为False,则返回True。
x=100 result=not(x<0) #not (x > 0) 表示对条件 x > 0 取反,因为 x > 0 为 True,所以结果为 False。 print(result) #True
[4]连续问题
(1)连续多个and
-
在连续多个and运算中,如果其中一个条件False,则整个表达式的结果为False;如果条件都为True,则表达式结果为True
x=7 y=9 z=10 result=(x>0)and(y>0)and(z>0) #(x > 0) and (y > 0) and (z > 0) 表示同时判断 x > 0、y > 0 和 z > 0 是否都为 True,因为三个条件都满足,所以结果为 True。 print(result) #True
(2)连续多个or
-
在连续多个or运算中,其中一个条件为True,则运算结果为True;全部条件为False时,运算结果为False
x=7 y=9 z=10 result=(x>0)or(y<0)or(z<0) #(x>0)or(y<0)or(z<0)表示同时判断x>0,y<0,z<0其中是否有条件为True,因为有一个条件为True(x>0),所以运算结果为Ture。 print(result) #True
【5】优先级not>and>or
-
在逻辑运算中not的优先级最高其次and再其次or
-
当表达式中同时包含这三种运算符时,
not
会首先被计算,然后是and
,最后是or
。
(1)优先级关系
print(3 > 4 and 4 > 3 or 1 == 3 and 'x' == 'x' or 3 > 3)#False
(2)区分板块
-
not的优先级最高,就是把紧跟其后的那个条件结果取反,所以not与紧跟其后的条件不可分割
-
如果语句中全部是用and连接,或者全部用or连接,那么按照从左到右的顺序依次计算即可
-
如果语句中既有and也有or,那么先用括号把and的左右两个条件给括起来,然后再进行运算
print((3 > 4 and 4 > 3) or (1 == 3 and 'x' == 'x') or 3 > 3)# False
(3)短路运算
-
逻辑运算的结果一旦可以确定
-
那么就以当前处计算到的值作为最终结果返回
#例子 result= (10 and 0) or ('' and 0) or 'abc' or ('egon' == 'dsb' and 333) or 10 > 4 #在"abc"这里短路了 不要再继续往下执行 print(result) #abc result= (10 and 0) or ('' and 0) or ('egon' == 'dsb' and 333) or 10 > 4 print(result) #True
(4)短路运算面试题
1 or 3 1 1 and 3 3 0 and 2 and 1 0 0 and 2 or 1 1 0 and 2 or 1 or 4 1 0 or False and 1 False
【5】成员运算符
-
成员运算符用于测试序列是否包含特定的元素,可以用字符串、元组、列表等序列类型的数据。
【1】in运算符
-
如果在序列中找到值返回True,否则返回False
fruits=["apple","banana","cherry"] print("banana" in fruits) #True print("tangerine" in fruits) #False
【2】not in 运算符
-
如果在指定的序列中没有找到值返回True;否则返回False
fruits=["apple","banana","cherry"] print("banana" not in fruits) #False print("tangerine" not in fruits) #True
【3】小结
print(not 'lili' in ['jack','tom','robin']) # True print('lili' not in ['jack','tom','robin']) # True
-
注意:虽然下述两种判断可以达到相同的效果,但我们推荐使用第二种格式,因为not in语义更加明确
【6】身份运算符
-
身份运算符用于比较对象的内存地址,判断两个对象是否指向同一块内存地址。
【1】is
运算符
-
如果两个变量引用同一个对象,则返回 True,否则返回 False。
a = [1, 2, 3] b = a c = [1, 2, 3] print(a is b) # True print(a is c) # False
【2】is not
运算符
-
如果两个变量引用的不是同一个对象,则返回 True,否则返回 False。
a = [1, 2, 3] b = a c = [1, 2, 3] print(a is not b) # False print(a is not c) # True
-
这两个运算符主要用于检查对象的标识,即它们是否指向相同的内存地址。
【补充】==
和 is
-
==比较的是值(value)是否相等
-
is比较的时内存地址(id)是否相同
-
在实际应用中,特别是对于可变对象,==通常适合比较值,而is更适合用于比较对象的身份。
-
id相同,内存地址必定相同,意味着type和value必定相同
-
value相同type肯定相同,但id可能不同
【1】 x = 'Info Tony:18' #1865216957872 y = 'Info Tony:18' #1865216957872 print(id(x), id(y)) #x与y的id相同,二者的值也相同 #2346061471152,2346061471152 print(type(x)) #<class 'str'>,值相同type肯定相同 print(type(y)) #<class 'str'>,值相同type肯定相同 print(x is y) #True,is比较的是id print(x == y) #True,等号比较的是value 【2】 a = [1, 2, 3] print(id(a)) #1455830618048 b = a print(id(b)) #1455830618048 c = [1, 2, 3] print(id(c)) #1455837781504 # 因为 a 是b来的所以a是b print(a is b) #True # 因为a 和 c 是两个独立的内存空间,所以 a 不是 c print(a is c) #False print(a is not c) #True