赞
踩
if condition:
statement(s)
if condition:
statement(s)
else:
statement(s)
if condition1:
statement(s)
elif condition2:
statement(s)
elif condition3:
statement(s)
...
if condition1:
statement(s)
elif condition2:
statement(s)
elif condition3:
statement(s)
...
else:
statement(s)
根据业务需求,需要嵌套多层if-else,如下:在判断是否满18岁后,还需要判断是否是男生。
可以嵌套无数层,但是嵌套过多层会影响代码颜值,代码的可读性会急速下降,后期维护难度也大大提高,所以并不建议。
Python有两种循环语句:while循环和for循环
代码结构如下:
while condition:
statement(s)
举几个例子:
break语句:跳出最近的一层循环体,执行该循环后面的语句。
举例:
continue语句:跳出最近的一层的本轮循环,但不退出循环,而是回到循环体的条件判断位置,继续下一轮循环。
举例:
举例:
运行结果:
但是这里和不加else,而是直接在循环后加print语句有啥区别?
答案是在此处没有区别!那有啥用呢?
①中的else与while是并列的,相当于是不满足while的循环条件才会执行else内的语句。
如果在while循环中加一个break,那么其实就是break语句强制跳出循环,此时while循环的条件依旧满足,此时else内的print语句便不会执行。如下:
运行结果:
而对②也进行一样的修改,最后的print语句还是会执行。
运行结果:
所以,while-else这样的设计有什么实质上的作用吗?
答案:可以非常容易地检测到循环的退出状况。
举例:
day = 1
while day <= 7:
answer = input("今天有进行学习打卡吗?")
if answer != '有':
break
day += 1
else:
print("你真棒,你已经连续打卡7天啦!")
运行结果:
题目:打印一个九九乘法表
i = 1
while i < 10:
j = 1
while j < 10:
if j != i + 1:
print(i, "*", j, "=", i*j, end=' ')
j += 1
else:
break
print()
i += 1
运行结果:
改进:
i = 1
while i < 10:
j = 1
while j <= i: #注意循环条件
print(i, "*", j, "=", i*j, end=' ')
j += 1
print()
i += 1
强调:无论是break语句还是continue语句,它们只能作用于最近的一层循环体!
代码结构如下:
for 变量 in 可迭代对象:
statement(s)
可迭代对象:元素可以被单独提取出来的对象。比如字符串等。而迭代就是遍历的过程。
举例:
while循环:
for循环经常搭配range()函数使用
range()函数可以创建一个整数列表,并返回一个可迭代对象(注意:类型是对象,不是直接返回列表类型!!!)
其有以下三种形式:(以下start、stop、step都只能是整数!)
1)range(stop):生成一个从0~stop(不包含stop)的整数序列,举例如下:
2)range(stop):生成一个从start~stop(不包含stop)的整数序列,举例如下:
3)range(start, stop, step):生成一个从start~stop(不包含stop),且步径的跨度为step的整数序列,举例如下:
步径的跨度为2:
步径的跨度为-2(注意:因为是递减,所以start>stop才可以!):
此外,for循环和while循环一样,可以支持嵌套,可以搭配break语句、continue语句和else语句。
题目:找出10以内的所有素数。
代码:
答:if money >= 100:
答: assert这个关键字我们称之为“断言”,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常。
什么情况下我们会需要这样的代码呢?当我们在测试程序的时候就很好用,因为与其让错误的条件导致程序今后莫名其妙地崩溃,不如在错误条件出现的那一瞬间我们实现“自爆”。
一般来说我们可以用Ta再程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert关键字就非常有用了。
语法格式如下:
其等价于:
使用实例:
答:x, y, z = z, y, x
答:这其实是 Python 的作者还没有为 Python 加入三元操作符之前,Python 社区的小伙伴们灵活的使用 and 和 or搭配来实现三元操作符的功能。这里就是取x、y中更小的值。
三元操作符就是之前if-else关键字的最后一种,格式如下:exp1 if contion else exp2
condition 是判断条件,exp1 和 exp2 是两个表达式。如果 condition 成立(结果为真),就执行 exp1,并把 exp1 的结果作为整个表达式的结果;如果 condition 不成立(结果为假),就执行 exp2,并把 exp2 的结果作为整个表达式的结果。
使用三元操作符取三个数中的最小值:
small = x if (x < y and x < z) else (y if y < z else z)
答:Python 有一个成员资格运算符:in,用于检查一个值是否在序列中,如果在序列中返回 True,否则返回 False。举例如下:
视频中小甲鱼使用 if elif else 在大多数情况下效率要比全部使用 if 要高,但根据一般的统计规律,一个班的成绩一般服从正态分布,也就是说平均成绩一般集中在 70~80 分之间,因此根据统计规律,我们还可以改进下程序以提高效率。
题目备忘:按照100分制,90分以上成绩为A,80到90为B,60到80为C,60以下为D,写一个程序,当用户输入分数,自动转换为ABCD的形式打印。
'''根据题意,平均分一般集中在70~80之间,那调整一下判断语句的顺序,即可一定程度上减少一些判断次数
score = int(input("请输入一个分数:"))
if 60 <= score < 80:
print("C")
elif 80 <= score < 90:
print("B")
elif 0 <= score < 60:
print("D")
elif 90 <= score < 100:
print("A")
else:
print("请输入0-100的分数")
for i in range(0, 10, 2):
print('I Love FishC')
答:5次。
for i in 5:
print('I Love FishC')
答:会报错,5不是可迭代对象。
答:break语句的作用是终止当前循环,跳出循环体。
continue语句的作用是终止本轮循环并开始下一轮循环(这里要注意的是:在开始下一轮循环之前,会先测试循环条件)。
答:0, 1, 2, 3, 4, 5, 6, 7, 8, 9
while True:
while True:
break
print(1)
print(2)
break
print(3)
答:2(换行)3
答:(转自早知晓博主)可以用于游戏实现,因为游戏只要运行着,就需要时刻接收用户输入,因此使用永远为真确保游戏“在线”。操作系统也是同样的道理,时刻待命,操作系统永远为真的这个循环叫做消息循环。另外,许多通讯服务器的客户端/服务器系统也是通过这样的原理来工作的。
所以永远为“真”虽然是“死循环”,但不一定是坏事,再说了,我们可以随时用 break 来跳出循环!
i = 0
string = 'ILoveFishC.com'
while i < len(string):
print(i)
i += 1
改进:
'''以上代码效率之所以低,是因为每次循环都需要调用一次len()函数,可以将len()函数提前使用'''
i = 0
string = 'ILoveFishC.com'
length = len(string)
while i < length:
print(i)
i += 1
程序演示如图:
代码如下:
psw = '3435'
count = 3
answer = ''
while count > 0 and answer != psw:
answer = input("请输入密码:")
for i in answer:
if i == '*':
print('密码中不能含有"*"号!您还有', count, '次机会!', end='')
break
else:
if answer != psw:
count -= 1
print("密码输入错误!您还有", count, "次机会", end='')
else:
print("密码正确,进入程序...")
直接使用’*’ in answer 就可以判断是否含有*,可以不用for循环呀!
改进:
psw= '3435'
count = 3
answer = ''
while count > 0 and answer != psw:
answer = input("请输入密码:")
if '*' in answer:
print('密码中不能含有"*"号!您还有', count, '次机会!', end='')
elif answer != psw:
count -= 1
print("密码输入错误!您还有", count, "次机会", end='')
else:
print("密码正确,进入程序...")
运行结果:
如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。
for n in range(100, 1000):
#获取到个十百位
g = n % 10
s = n // 10 % 10
b = n // 100 % 10
m = b ** 3 + s ** 3 + g ** 3
if n == m:
print(n)
另一种思路:
for i in range(100, 1000):
sum = 0
temp = i
while temp:
sum += (temp % 10) ** 3 # 依次得到个十百位,进行幂运算后相加
temp //= 10 # 地板除,以便进行下一次循环获取下一位
if sum == i:
print(i)
运行结果:
有红、黄、蓝三种颜色的球,其中红球 3 个,黄球 3 个,蓝球 6 个。先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配。
#蓝色球6个 红色球3个 黄色球3个
#由题意,至少会抽到2个蓝色球,红色球和黄色球则可能抽到0~3个
#以蓝色球和红色球进行嵌套for循环,而后只要保证黄色球是0~3个即可
for blue in range(2, 7):
for red in range(0, 4):
yellow = 8 - blue - red
if 0 <= yellow <= 3:
print("蓝:", blue, "红:", red, "黄:", yellow)
运行结果:
其实,可以选任意两个颜色的球进行嵌套for循环,选择红色和黄色球时代码如下:
#蓝色球6个 红色球3个 黄色球3个
#由题意,至少会抽到2个蓝色球,红色球和黄色球则可能抽到0~3个
#以黄色球和红色球进行嵌套for循环,而后只要保证蓝色球是2~6个即可
for yellow in range(0, 4):
for red in range(0, 4):
blue = 8 - yellow - red
if 2 <= blue <= 6:
print("蓝:", blue, "红:", red, "黄:", yellow)
运行结果:
使用转义字符’\t’制表:
#使用转义字符\t制表
print("蓝\t 红\t 黄")
for yellow in range(0, 4):
for red in range(0, 4):
blue = 8 - yellow - red
if 2 <= blue <= 6:
print(blue, "\t", red, "\t", yellow)
运行结果:
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
while 1:
number = input("请输入一个整数:")
if number.isdigit():
dnumber = ''
length = len(number)
for i in range(length-1, -1, -1):
dnumber += number[i]
if dnumber == number:
print("这是一个回文整数!")
else:
print("这不是一个回文整数!")
break
else:
print("输入错误!")
使用字符串倒序(其实是切片操作的一种),代码如下:
所以,代码可改进如下:
while 1:
number = input("请输入一个整数:")
if number.isdigit():
dnumber = number[::-1]
if dnumber == number:
print("这是一个回文整数!")
else:
print("这不是一个回文整数!")
break
else:
print("输入错误!")
运行结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。