交互以及基本运算符
内容概要
- 与用户交互
与程序实现沟通交流
- 格式化输出
- 基本运算符
数学运算符
赋值运算符
逻辑运算符
比较运算符
增量运算符
链式运算符
...
- 流程控制
if判断
while判断
for判断
一、程序与用户的交互
- 输入input
在python3中input功能会等待用户的输入,用户输入任何内容,都存成字符串类型,然后赋值给等号左边的变量名。
username=input('请输入您的用户名:')
请输入您的用户名:jack # username = "jack"
password=input('请输入您的密码:')
请输入您的密码:123 # password = "123"
# 1、在python2中存在一个raw_input功能与python3中的input功能一模一样
# 2、在python2中还存在一个input功能,需要用户输入一个明确的数据类型,输入什么类型就存成什么类型
# 3、python2与python3的区别
"""python3"""
#input获取到的用户输入都会存成字符串的形式。
"""python2"""
#input需要用户自己人为的指定输入的数据类型
- 输出output
print('hello world') # 只输出一个值
hello world
print('first','second','third') # 一次性输出多个值,值用逗号隔开
first second third
# 默认print功能有一个end参数,该参数的默认值为"\n"(代表换行),可以将end参数的值改成任意其它字符
- 输出之格式化输出:
1、什么是格式化输出?
把一段字符串里面的某些内容替换掉之后再输出,就是格式化输出。
2、为什么要格式化输出?
我们经常会输出具有某种固定格式的内容,比如:'亲爱的xxx你好!你xxx月的话费是xxx,余额是xxx‘,我们需要做的就是将xxx替换为具体的内容。
3、如何格式化输出?
这就用到了占位符,如:%s、%d:
# %s占位符:可以接收任意类型的值
# %d占位符:只能接收数字
print('亲爱的%s你好!你%s月的话费是%d,余额是%d' %('tony',12,103,11))
亲爱的tony你好!你12月的话费是103,余额是11
基本运算符
- 算数运算符
python支持的算数运算符与数学上计算的符号使用是一致的(以x=9,y=2为例)
| 算数运算符 | 描述 | 实例 |
|---|---|---|
| + | 加,两个对象相加 | x+y的得11 |
| - | 减,两个对象相减 | y-x得-7 |
| * | 乘,两个对象相乘 | x*y得18 |
| / | 除,相除后得到的返回值会保留整数与小数部分 | x/y得4 |
| // | 取整除,相除后得到的返回值只保留整数部分 | x//y得1 |
| % | 取余,相除后只返回余数 | x%y得1 |
| ** | 幂,取一个数的n次方 | x**y得81 |
- 比较运算符
比较运算用来对两个值进行比较,返回的是布尔值True或False(以x=9,y=2为例)
| 比较运算符 | 描述 | 示例 |
|---|---|---|
| == | 等于,两个对象相等则返回True,否则返回False | x==y得False |
| != | 不等于,两个对象相等则返回True,否则返回False | x!=y得True |
| > | 大于 | x>y得True |
| >= | 大于等于 | x>=y得True |
| < | 小于 | x>y得False |
| <= | 小于等于 | x<=y得False |
- 赋值运算符
python语法中除了有=号这种简单的赋值运算外,还支持增量赋值、链式赋值、交叉赋值、解压赋值,这些赋值运算符存在的意义都是为了让我们的代码看起来更加精简
1、增量赋值
| 赋值运算符 | 描述 | 示例 |
|---|---|---|
| = | 简单赋值运算 | x=10 |
| += | 加法赋值运算 | x=10 x+=1等同于x=x+1>>>x=11 |
| -= | 减法赋值运算 | y=20 y-=1等同于y=y-1>>>y=19 |
| *= | 乘法赋值运算 | 同上 |
| /= | 除法赋值运算 | 同上 |
| //= | 取整除赋值运算 | 同上 |
| %= | 取余赋值运算 | 同上 |
| **= | 幂赋值运算 | 同上 |
2、链式赋值
如果我们想把同一个值同时赋值给多个变量名,可以这么做
>>> z=10
>>> y=z
>>> x=y
>>> x,y,z
(10, 10, 10)
链式赋值指的是可以用一行代码搞定这件事
>>> x=y=z=10
>>> x,y,z
(10, 10, 10)
3、交叉赋值
我们定义两个变量x与y
>>> x=10>>> y=20
如果我们想将x与y的值交换过来,可以这么做
>>>z=x>>> x=y>>> y=z>>> x,y(20, 10)
当然交叉赋值指的是一行代码可以搞定这件事
>>> x=10>>> y=20>>> x,y=y,mx# 交叉赋值>>> x,y(20, 10)
4、解压赋值
如果我们想把列表中的多个值取出来依次赋值给多个变量名,可以这么做
>>> 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)
解压赋值指的是一行代码可以搞定这件事
nums = [11, 22, 33, 44, 55] # nums包含多个值,就好比一个压缩包,解压赋值因此得名a, b, c, d, e = numsprint(a, b, c, d, e)(11, 22, 33, 44, 55)
注意,上述解压赋值,等号左边的变量名个数必须与右面包含值的个数相同,否则会报错
但如果我们只想取头尾的几个值,可以用*_匹配
nums = [11, 22, 33, 44, 55]a, b, *_, e = numsprint(a, b, _, e)11 22 [33, 44] 55
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>2 True |
1、连续多个and
可以用and连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为False,则无需再往右判断,可以立即判定最终结果就为False,只有在所有条件的结果都为True的情况下,最终结果才为True。
>>> 2 > 1 and 1 != 1 and 3 > 2 # 判断完第二个条件,就立即结束,得的最终结果为FalseFalse
2、连续多个or
可以用or连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为True,则无需再往右判断,可以立即判定最终结果就为True,只有在所有条件的结果都为False的情况下,最终结果才为False
2 > 1 or 1 != 1 or True or 3 > 2 # 判断完第一个条件,就立即结束,得的最终结果为TrueTrue
3、优先级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的左右两个条件给括起来,然后再进行运算
'''
>>> (3>4 and 4>3) or (1==3 and 'x' == 'x') or 3 >3
False
#3、短路运算:逻辑运算的结果一旦可以确定,那么就以当前处计算到的值作为最终结果返回
>>> 10 and 0 or '' and 0 or 'abc' or 'egon' == 'dsb' and 333 or 10 > 4
我们用括号来明确一下优先级
>>> (10 and 0) or ('' and 0) or 'abc' or ('egon' == 'dsb' and 333) or 10 > 4
短路: 0 '' 'abc'
假 假 真
返回: 'abc'
布尔值为False: 0 None '' [] {} (比较重要)

浙公网安备 33010602011771号