基本运算符与流程控制

本文围绕Python展开,介绍了基本运算符,如算术、比较、赋值等运算符,其中赋值运算符包含增量、链式、交叉、解压赋值;还阐述了流程控制,包括顺序、分支、循环结构,详细说明了分支结构的单分支、双分支、多分支,以及循环结构中死循环、跳出本层循环等情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基本运算符

运算符是可以操纵操作数值的结构。如下一个表达式:10 + 20 = 30。这里,1020称为操作数,+则被称为运算符,Python基本运算符包括算术运算符、比较运算符、赋值运算符、逻辑运算符、位运算符、成员运算符和身份运算符。

1. 算数运算符

以下假设变量 a=10,变量 b=21:

运算符描述实例
+加 - 两个对象相加a + b 输出结果 31
-减 - 得到负数或是一个数减去另一个数a - b 输出结果 -11
*乘 - 两个数相乘或是返回一个被重复若干次的字符串a * b 输出结果 210
/除 - x 除以 yb / a 输出结果 2.1
%取模 - 返回除法的余数b % a 输出结果 1
**幂 - 返回x的y次幂a**b 为10的21次方
//取整除 - 往小的方向取整数9//2     4
-9//2    -5
a = 21
b = 10
c = 0
 
c = a + b
print ("1 - c 的值为:", c)
 
c = a - b
print ("2 - c 的值为:", c)
 
c = a * b
print ("3 - c 的值为:", c)
 
c = a / b
print ("4 - c 的值为:", c)
 
c = a % b
print ("5 - c 的值为:", c)
 
# 修改变量 a 、b 、c
a = 2
b = 3
c = a**b 
print ("6 - c 的值为:", c)
 
a = 10
b = 5
c = a//b 
print ("7 - c 的值为:", c)

以上输出结果:

1 - c 的值为: 31
2 - c 的值为: 11
3 - c 的值为: 210
4 - c 的值为: 2.1
5 - c 的值为: 1
6 - c 的值为: 8
7 - c 的值为: 2

2. 比较运算符

以下假设变量 a=10,变量 b=21:

运算符描述实例
==等于 - 比较对象是否相等(a == b) 返回 False。
!=不等于 - 比较两个对象是否不相等(a != b) 返回 True。
>大于 - 返回x是否大于y(a > b) 返回 False。
<小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。
这分别与特殊的变量True和False等价。注意,这些变量名的大写。
(a < b) 返回 True。
>=大于等于 - 返回x是否大于等于y。(a >= b) 返回 False。
<=小于等于 - 返回x是否小于等于y。(a <= b) 返回 True。
a = 21
b = 10
c = 0
 
if ( a == b ):
   print ("1 - a 等于 b")
else:
   print ("1 - a 不等于 b")
 
if ( a != b ):
   print ("2 - a 不等于 b")
else:
   print ("2 - a 等于 b")
 
if ( a < b ):
   print ("3 - a 小于 b")
else:
   print ("3 - a 大于等于 b")
 
if ( a > b ):
   print ("4 - a 大于 b")
else:
   print ("4 - a 小于等于 b")
 
# 修改变量 a 和 b 的值
a = 5
b = 20
if ( a <= b ):
   print ("5 - a 小于等于 b")
else:
   print ("5 - a 大于  b")
 
if ( b >= a ):
   print ("6 - b 大于等于 a")
else:
   print ("6 - b 小于 a")

以上输出结果:

1 - a 不等于 b
2 - a 不等于 b
3 - a 大于等于 b
4 - a 大于 b
5 - a 小于等于 b
6 - b 大于等于 a

3. 赋值运算符

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

3.1 增量赋值

以下假设变量a为10,变量b为20:

运算符描述实例
=简单的赋值运算符(c = a + b 将 a + b 的运算结果赋值为 c
+=加法赋值运算符c += a 等效于 c = c + a
-=减法赋值运算符c -= a 等效于 c = c - a
*=乘法赋值运算符c *= a 等效于 c = c * a
/=除法赋值运算符c /= a 等效于 c = c / a
%=取模赋值运算符c %= a 等效于 c = c % a
**=幂赋值运算符c **= a 等效于 c = c ** a
//=取整除赋值运算符c //= a 等效于 c = c // a

3.2 链式赋值

链式赋值是指将多个变量同时赋值的一种方法。在Python中,可以使用多个变量名来同时接收一个序列(如列表、元组)中的多个元素,或者使用多个变量名来同时将一个表达式的多个值赋给不同的变量。

如下把一个变量值赋值个多个变量名

x = 111
y = 111
z = 111

x, y, z = 111  #可以直接写成
print(x, y, z)

3.3 交叉赋值

交叉赋值是一种同时交换两个或多个变量值的方式。

以下假设变量a为10,变量b为20:

a = 10
b = 20
 # 交换a和b的变量值 首先需要一个空的变量名
c = a
a = b
b = c
print(a, b) # 20,10

交叉赋值指的是一行代码搞定,非常方便

a, b = b, a

3.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)  # 输出结果

解压赋值指的是一行代码搞定

>>> 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)  # 输出结果

把列表里面没有变量赋予的值都交给*后面的变量命名并且以列表的形式返回

4. 逻辑运算符

关键字: and or not (逻辑运算符用于连接多个条件,进行关联判断,会返回布尔值True或False)
and:与---------->and两边的值必须都是True的时候,整体结果才是True
or: 或者---------->or两边的值只要有一个是真,整体结果就是真
not: 非,取反-------->not取反

以下假设变量 a 为 10, b为 20:

运算符逻辑表达方式描述实例
andx and y布尔"与" - 如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值。(a and b) 返回 20。
orx or y布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。(a or b) 返回 10。
notnot x布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。not(a and b) 返回 False

4.1 连续多个and

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

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

4.2 连续多个or

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

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

4.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'

#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. 成员运算符

关键字:in(在) not in(不在)

运算符描述实例
in如果在指定的序列中找到值返回 True,否则返回 False。x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
eg:
        names_list = ['kevin', 'tony', 'tank', 'jerry']
        # 判断jerry这个人在不在列表中
        print('jerry' in names_list)
    # print('jer1' in 'jerry') # True False

    d = {'username':'kevin', 'age':18}

    '''如果是字典,判断的是字典的key值,字典暴露给外界是key'''
    print('kevin' in d) # False
    print('username' in d) # True
    print('age' in d) 

6. 身份运算符

关键字:in(在) not in(不在)

运算符描述实例
is是判断两个标识符是不是引用自一个对象x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
not isis not 是判断两个标识符是不是引用自不同对象x is not y , 类似 id(x) != id(y)。如果引用的不是同一个对象则返回结果 True,否则返回 False。
关键字:is(比较的是内存地址,id) ==(比较值的)
    ############身份运算
    # s1 = 'hello'
    s1 = [1, 2, 3, 4,]
    # s2 = 'hello'
    s2 = [1, 2, 3, 4,]
    print(s1 == s2)
    print(s1 is s2) # False

    """值相等的,内存地址不一定相等"""
    """内存地址相等的,值一定相等"""

二、流程控制

流程控制即控制流程,具体指控制程序的执行流程,而程序的执行流程分为三种结构:顺序结构(之前我们写的代码都是顺序结构)、分支结构(用到if判断)、循环结构(用到while与for)

控制事物的执行流程

执行流程总共有三种:

  1. 顺序结构
    我们之前写的代码执行顺序就是一种顺序结构,按照顺序一一执行
  2. 分支结构
    就是按照条件的成功与否,决定执行哪个分支.
  3. 循环结构
    重复执行某一个流程

注意事项:

  1. 所有的条件都会转为布尔值进行判断
  2. 在Python中,我们使用缩进来表示代码的从属关系
    # 一般我们使用四个空格来表示一个缩进
  3. 不是所有的代码都有从属关系
  4. 同属于一个代码块的子代码块缩进量要保持一致
    小技巧:如果上面一行代码的结尾是冒号:那么,下一行必缩进

1.分支结构

关键字:if, elif, else

1.1 单分支结构

    	语法格式:
    		if 条件:
    			条件成立之后要执行的代码块
    			
    age = 18  # 如果年龄小于26,称之为是小姐姐

1.2 双分支

		语法格式:
			if 条件:
				条件成立之后执行的代码块
			else:
				条件不成立执行的代码块

if age < 26:
    print('小姐姐好')
else:
    print('不好意思,认错人了')
    
"""双分支结构必然会走一个分支"""

分支结构里面支持写多个条件
age = 20
height = 165
weight = 100
is_beautiful = False
if age < 26 and height >= 165 and weight <= 100 and is_beautiful:
    print('小姐姐好看')
else:
    print('......')

1.3 多分支

	语法格式:
		if 条件1:
			条件1成立之后执行的代码块
		elif 条件2:
			条件1不成立条件2成立执行的代码块
		elif 条件3:
			条件12不成立,条件3成立执行的代码块
		elif 条件4:
			条件123不成立,条件4成立执行的代码块
		else:
			以上条件都不成立执行的代码块


练习题:
	根据你的分数打印不同的等级
    优秀  良好  中等 及格  不及格
    score = 80
    score = 88

    if score >= 90:
        print('优秀')
    elif score >= 80:
        print('良好')
    elif score >= 70:
        print('中等')
    elif score >= 60:
        print('及格')
    else:
        print('不及格')

2.if 嵌套语法

	x = 10
	if x > 0:
	    print("x is positive")
	    if x % 2 == 0: 
	        print("x is even")
	    else:
	        print("x is odd")
	else:
	    print("x is negative or zero")

3.循环结构

3.1 死循环

关键字:while

while True:
    username = input('请输入你的用户名:')
    password = input('请输入你的密码:')

    if username == 'kevin' and password == '123':
        print('登录成功')
    else:
        print('登录失败')

3.2 跳出本层循环

while True:
    username = input('请输入你的用户名:')
    password = input('请输入你的密码:')

    if username == 'kevin' and password == '123':
        print('登录成功')
        break # 跳出本层循环
    else:
        print('登录失败')

break跳出本层循环的含义

while True:
    username = input('请输入你的用户名:')
    password = input('请输入你的密码:')

    if username == 'kevin' and password == '123':
        print('登录成功')
        ####### 让用户继续输入它要执行的指令,用户输入完指令之后,打印正在执行某个指令
        while True:
            cmd = input('请输入你要执行的指令:')
            if cmd == 'q':
                # 结束程序
                break
            print('正在执行你的指令:%s' % cmd) # 当用户输入q的时候,结束程序
        break
    else:
        print('登录失败')

3.3 标志位的使用

flag = True
while flag:
    username = input('请输入你的用户名:')
    password = input('请输入你的密码:')

    if username == 'kevin' and password == '123':
        print('登录成功')
        ####### 让用户继续输入它要执行的指令,用户输入完指令之后,打印正在执行某个指令
        while flag:
            cmd = input('请输入你要执行的指令:')
            if cmd == 'q':
                # 结束程序
                flag = False
            print('正在执行你的指令:%s' % cmd) # 当用户输入q的时候,结束程序
    else:
        print('登录失败')

while+continue

1. 练习题:使用while循环打印出0-10之间的数字
count = 0
while count < 10:
    print(count)
    count += 1
    
2. 练习题:使用while循环打印出0-10之间的数字, 但是不打印6
count = 0
while count < 10:
    if count == 6:
        count += 1
        # 不打印
        continue  # 跳出while循环的本次循环 --------------- 本层
    print(count)
    count += 1

while+else

count = 0
while count < 5:
    if count == 3:
        break
    print(count)
    count += 1
else:
    print('哈哈哈')
"""else: 当while循环中没有被中断(break)的时候会走else语句"""

3.4 死循环

# 程序中坚决不能出现死循环
count = 0
while True:
    print(count)
    count+=1
    
"""如果一旦出现了死循环,CPU的利用率会极速拉满,导致其他程序也不能用,甚至于关机"""

3.5 for循环

"""for循环不会出现死循环,它的循环条件不是我们来控制,是人家内部已经控制好了"""

for循环和while循环都是用来重复一个事情的,for循环能够实现的功能,while循环都可以实现
for循环的语法结构更加简洁,它不容易出现死循环,所以,推荐以后能够使用for循环的都使用for循环

"""
	可迭代对象:字符串、列表、字典、元组等,能够支持for循环的对象都是可迭代对象
	for循环的语法格式:
		for 变量名 in 可迭代对象: 
			pass
"""

'''字典暴露的是字典的key'''
d = {'username': 'jerry', 'age': 18}
for i in d:
    print(i, d[i]) # username age

4. range关键字

### 三种用法
1. 方式1
for i in range(10):  # 生成一个从0开始到9的数字
    print(i)

for i in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
    print(i)
    
    
2. 方式2
for i in range(3, 10): # 生成一个从3开始到9的数字列表
    print(i)
    
3. 方式三
for i in range(0, 250, 25): # 第三个参数代表的是步长
    print(i)
    
"""练习题:使用for循环生成这10页的地址"""

https://movie.douban.com/top250?start=0&filter=  # 第一页
https://movie.douban.com/top250?start=25&filter=  # 第二页
https://movie.douban.com/top250?start=50&filter=  # 第三页
https://movie.douban.com/top250?start=75&filter=  # 第四页
https://movie.douban.com/top250?start=100&filter= # 第五页
https://movie.douban.com/top250?start=225&filter= # 最后一页

base_url = 'https://movie.douban.com/top250?start=%s&filter='
for i in range(0, 2500, 25):
    # print(base_url % i)
    print('https://movie.douban.com/top250?start=%s&filter=' % i)

4.1 for+break

for i in range(10):
    if i == 6:
        break
    print(i)

4.2 for+continue

for i in range(10): 
    if i == 6:
        continue
    print(i)

4.3 for+else

'''跟while循环的用法一样,中间如果有中断程序,else就不在走了'''
for i in range(10):
    if i == 6:
        break
    print(i)
else:
    print('hahh ')

4.4for循环的嵌套

for i in range(3):
    for j in range(5):
        print("*", end='')
    print()  # print()表示换行
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值