if money >= 100:
assert这个关键字我们称之为“断言”,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常。 什么情况下我们会需要这样的代码呢?当我们在测试程序的时候就很好用,因为与其让错误的条件导致程序今后莫名其妙地崩溃,不如在错误条件出现的那一瞬间我们实现“自爆”。 一般来说我们可以用Ta在程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert关键字就非常有用了。
x, y, z = z, y, x
这其实是 Python 的作者还没有为 Python 加入三元操作符之前,Python 社区的小伙伴们灵活的使用 and 和 or 搭配来实现三元操作符的功能
Python 有一个成员资格运算符:in,用于检查一个值是否在序列中,如果在序列中返回 True,否则返回 False。
例如:
>>> name = '小甲鱼'
>>> '鱼' in name
True
>>> '肥鱼' in name
False
5. 使用 if elif else 在大多数情况下效率要比全部使用 if 要高,但根据一般的统计规律,一个班的成绩一般服从正态分布,也就是说平均成绩一般集中在 70~80 分之间,因此根据统计规律,我们还可以改进下程序以提高效率。
print("输入分数,计算评级")
score = input("输入分数")
scr = int(score)
if 100 >= scr >= 90:
print("A")
else:
if 90 > scr >= 80:
print("b")
else:
if 80 > scr >= 60:
print("C")
else:
if 60 > scr >= 0:
print("D")
else:
print("end")
6. Python 中的三元操作符
small = x if (x < y and x < z) else (y if y < z else z)
7. range()函数的用法
>>> range(1,5) #代表从1到5(不包含5)
[1, 2, 3, 4]
>>> range(1,5,2) #代表从1到5,间隔2(不包含5)
[1, 3]
>>> range(5) #代表从0到5(不包含5)
[0, 1, 2, 3, 4]
8. break 和 continue 在循环中起到的作用
break语句的作用是终止当前循环,跳出循环体。 continue语句的作用是终止本轮循环并开始下一轮循环(要注意的是:在开始下一轮循环之前,会先测试循环条件)。
9. 什么情况下我们要使循环永远为真?
比如用于游戏实现,因为游戏只要运行着,就需要时刻接收用户输入,因此使用永远为真确保游戏“在线”。操作系统也是同样的道理,时刻待命,操作系统永远为真的这个循环叫做消息循环。另外,许多通讯服务器的客户端/服务器系统也是通过这样的原理来工作的。
所以永远为“真”虽然是“死循环”,但不一定是坏事,再说了,我们可以随时用 break 来跳出循环!
10. 以下代码效率方面怎样?有没有办法可以大幅度改进(仍然使用while)?
i = 0
string = 'ILoveFishC.com'
while i < len(string)):
print(i)
i += 1
这段代码之所以“效率比较低”是因为每次循环都需要调用一次len()函数
i = 0
string = 'ILoveFishC.com'
length = len(string)
while i < length:
print(i)
i += 1
11. 设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含"*"则不计算在内。
i=0
myname='sa'
mypwd='pwd'
while 1:
name=input('请输入用户名')
pwd=input('请输入密码')
if ('*' in name) or ('*' in pwd) : print('输入的内容中不能包含*')
continue
if name==myname and pwd==mypwd :
print('login success')
break
else:
i+=1
#print('用户名或者密码错误,你还有'+str(3-i)+'次机会')
print('密码输入错误!您还有', 3-i, '次机会!', end=' ')
if i==3:
print('3次机会用完,今日不能再次登录!')
12. 编写一个程序,求100~999之间的所有水仙花数。 如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数
for i in range(100, 1000):
sum = 0
temp = i
while temp:
sum = sum + (temp%10) ** 3
temp //= 10 # 注意这里要使用地板除哦~
if sum == i:
print(i)
13. 三色球问题 有红、黄、蓝三种颜色的求,其中红球 3 个,黄球 3 个,蓝球 6 个。先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配。
print('红-黄-蓝')
for i in range(4):
for j in range(4):
for k in range(7):
if i+j+k==8:
print(i,'\t',j,'\t',k)
print('红-黄-蓝')
for i in range(4):
for j in range(4):
for k in range(2,7):
if i+j+k==8:
print(i,'\t',j,'\t',k)
注释:range(2, 7)是产生[2, 3, 4, 5, 6]5个数,蓝球不能是1个,因为如果蓝球是1个的话,红球+黄球需要有7个才能符合题意,而红球和黄球每种只有3个,因此是range(2, 7) 两种思路:1是绿球不能是0或1,因为如果绿球是1个的话,红球+黄球需要有7个才能符合题意,而红球和黄球每种只有3个,因此是range(2, 7)。 2是因为有条件(i+j+k==8)的限制,不需要考虑蓝球取值,因此是range(7):