python基础之用户交互,运算符
用户交互与基本运算符
用户交互
什么是用户交互
用户交互就是人往计算机中input/输入数据,计算机print/输出结果
为什么要有用户交互
为了让计算机能够像人一样与用户沟通交流
比如,过去我们去银行取钱,用户需要把帐号密码告诉柜员,而现在,柜员被ATM机取代,ATM机就是一台计算机,所以用户同样需要将帐号密码告诉计算机,于是我们的程序中必须有相应的机制来控制计算机接收用户输入的内容,并且输出结果
输入input
# 在python3中input功能会等待用户的输入,用户输入任何内容,都存成字符串类型,然后赋值给等号左边的变量名
username = input('请输入你的用户名:')
请输入您的用户名:zz # username = "zz"
# 补充
1. 在python2中存在一个raw_input功能与python3中的input功能一模一样
2. python2中还存在一个input功能,需要用户输入一个明确的数据类型,输入什么类型就存成什么类型
输出print
1.print可以输出一个值或者多个值,当输出多个值 用逗号隔开
print('hello world') # 只输出一个值
# 输出结果:hello world
print('first','second') # 一次性输出多个值,值用逗号隔开
# 输出结果:first second
2.默认print功能有一个end参数,该参数的默认值为"\n"(代表换行),可以将end参数的值改成任意其他字符
print('你是',end='','猪儿',end='@','虫')
# 输出结果为:
你是
猪儿@虫
格式化输出
1.把一段字符串里面的某些内容替换掉之后在输出,就是格式化输出。
2.用%s,%d可以格式化输出 例如:
# %s占位符:可以接收任意类型的值
# %d占位符:只能接收数字
print('亲爱的%s你好!你%s月的话费是%d,余额是%d' %('tony',12,103,11))
亲爱的tony你好!你12月的话费是103,余额是11
基本运算符
算数运算符
python支持的算数运算符与数学上计算的符号使用是一致的,我们以x=7,y=2为例
| 算术运算符 | 描述 | 示例 |
|---|---|---|
| + | 加,两个对象相加 | x+y得9 |
| - | 减。两个对象相减 | x-y得5 |
| * | 乘,两个对象相乘 | x*y得14 |
| / | 除,相除后得到的返回值会保留整数和小数部分 | x/y得3.5 |
| // | 取整除,相除后得到的返回值只保留整数 | x//y得3 |
| % | 取余,相除后只返回余数 | x%y得1 |
| ** | 幂,取一个数得n次方 | x**y得49 |
比较运算符
比较运算用来对两个值进行比较,返回的是布尔值True或False,我们以x=7,y=2为例
| 比较运算符 | 描述 | 示例 |
|---|---|---|
| == | 等于,两个对象相等返回True,否则返回False | x==y得False |
| != | 不等于,两个对象相等返回False,否则返回True | x!=y得True |
| > | 大于 | x>y得True |
| >= | 大于等于 | x>=y得True |
| < | 小于 | x<y得False |
| <= | 小于等于 | x<=y得False |
赋值运算符
python语法中除了有=号这种简单的赋值运算外,还支持增量赋值、链式赋值、交叉赋值、解压赋值,这些赋值运算符存在的意义都是为了让我们的代码看起来更加精简。
增值运算符
# = :简单赋值运算符
x=10
# += :加法赋值运算符
x=10
x+=1 # 等同于x=x+1
print(x) # 11
# -= : 减法赋值运算符
x=10
x-=1 # 等同于x=x-1
print(x) # 9
# *= : 乘法赋值运算符
x=10
x*=2 # 等同于x=x*1
print(x) # 20
# /= : 除法赋值运算符
x=10
x/=2 # 等同于x=x/2
print(x) # 5
# //= : 取整赋值运算符
x=9
x//=2 # 等同于x=x//2
print(x) # 4
# %= : 取余赋值运算符
x=9
x%=2 # 等同于x=x%2
print(x) # 1
# *= : 减法赋值运算符
x=10
x*=2 # 等同于x=x*2
print(x) # 100
链式赋值
# 如果我们想把同一个值同时赋值给多个变量名,可以这么做
x=10
y=x
z=y
print(x,y,z) # 10,10,10
# 链式赋值指的是可以用一行代码搞定这件事
x=y=z=10
print(x,y,z) # 10,10,10
交叉赋值
# 定义两个变量m与n
m=10
n=20
# 想将m与n的值交换过来,可以这么做
temp=m
m=n
n=temp
print(m,n) # m=20,n=10
# 一行代码搞定
m=10
n=20
m,n=n,m
print(m,n) # m=20,n=10
解压赋值
# 我们想把列表中的多个值取出来依次赋值给多个变量名
nums = ['a','b','c']
a=nums[1]
b=nums[2]
c=nums[3]
print(a,b,c) # a,b,c
# 解压赋值指的是一行代码可以搞定这件事
nums = ['a','b','c']
a,b,c=nums
print(a,b,c) # a,b,c
"""
上述解压赋值,等号左边的变量名个数必须与右面包含值的个数相同,否则会报错
"""
# 只想取头尾的几个值,可以用*_匹配
nums = [11,22,33,44]
a,b,*_ = nums
print(a,b) # 11,22
逻辑运算符
逻辑运算符用于连接多个条件,进行关联判断,会返回布尔值True或False
| 逻辑运算符 | 描述 | 示例 |
|---|---|---|
| and | 逻辑与,用于连接两个条件,两个条件同时成立时才返回True,否则返回False | 3>1 and 4==4 True |
| or | 逻辑或,用于连接两个条件,两个条件成立一个就返回True,只有两个条件都不成立才返回False | 3>1 and 4==a True |
| not | 取反 | not 1>2 True |
连续多个and
连续多个and
"""
可以用and连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为False,则无需再往右判断,可以立即判定最终结果就为False,只有在所有条件的结果都为True的情况下,最终结果才为True。
"""
2 > 1 and 1!=1 and True and 3>2 # 判断完第二个条件,就立即结束,得的最终结果为False
连续多个or
"""
可以用or连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为True,则无需再往右判断,可以立即判定最终结果就为True,只有在所有条件的结果都为False的情况下,最终结果才为False
"""
3 > 1 or 1 != 1 or True or 3 > 2 # 判断完第一个条件,就立即结束,得的最终结果为True
优先级not>and>or
# 三者的优先级关系:not>and>or,同一优先级默认从左往右计算。
3>4 and 4>3 or 1==3 and 'x' == 'x' or 3 >3 # False
# 最好使用括号来区别优先级,其实意义与上面的一样
"""
'''
原理为:
(1) not的优先级最高,就是把紧跟其后的那个条件结果取反,所以not与紧跟其后的条件不可分割
(2) 如果语句中全部是用and连接,或者全部用or连接,那么按照从左到右的顺序依次计算即可
(3) 如果语句中既有and也有or,那么先用括号把and的左右两个条件给括起来,然后再进行运算
'''
"""
(3>4 and 4>3) or (1==3 and 'x' == 'x') or 3 >3 # False
# 短路运算:逻辑运算的结果一旦可以确定,那么就以当前处计算到的值作为最终结果返回
10 and 0 or '' and 0 or 'abc' or 'qq' == 'dsb' and 333 or 10 > 4
# 我们用括号来明确一下优先级
(10 and 0) or ('' and 0) or 'abc' or ('qq' == 'dsb' and 333) or 10 > 4
# 0 为假 '' 为假 'abc' 为真 因此返回abc
成员运算符
| 成员运算符 | 描述 | 示例 |
|---|---|---|
| in | 某一个对象包含于另外一个对象就返回True, 字符串,列表,元组,字典,集合都支持成员运算 |
"hello" in "hello world" 得 True |
| not in | 某一个对象没有包含于另外一个对象则返回True | "ab" in "hello world" True |
# 虽然下述两种判断可以达到相同的效果,但我们推荐使用第二种格式,因为not in语义更加明确
not 'abc' in 'hello world' # True
'abc' not in 'hello world' # True
身份运算符
| 身份运算符 | 描述 | 示例 |
|---|---|---|
| is | is 比较的是id 两个对象得id相同返回True |
x=10 y=x (id(x),id(y)) (2619426761296,2619426761296) x is y 得到True |
| not is | 两个对象得id不同时返回True,相同返回False | x='a' y='b'' (id(x),id(y)) (1691928338480 1691928330160) x not is y 得True |
"""
==双等号比较的是value是否相等,而is比较的是id是否相等
1. id相同,内存地址必定相同,意味着type和value必定相同
2. value相同type肯定相同,但id可能不同
"""
x='Hello world'
y='Hello world'
print(id(x),id(y)) # (2406246530800 ,2406246530820)
print(x is y) # False
print(x==y) # True

浙公网安备 33010602011771号