练习1:假设x=1,y=2,z=3,如何快速实现将三个变量的值快速交换?
>>> x,y,z=1,2,3
>>> x,y,z=z,x,y
>>> print(x);print(y);print(z);
3
1
2
练习2:有三个数x,y,z,用三元操作符的方法以最少的代码找出其中最小的值,并赋值给min。
>>> x,y,z=6,3,5
>>> min=x if (x<y and x<z) else (y if y<z else z)
>>> min
3
上述代码相当于:
x,y,z=6,3,5
if x<y and x<z: #如果x是最小的
min=x
elif y<z: #否则最小的数则在y和z之间,如果y比z小
min=y
else: #否则z最小
min=z
print(min)
练习3:猜猜for i in range(0, 5, 2):... 会进入几次循环体,及循环体内的内容会执行几次?
for i in range(0,5,2):
print(i)
#结果:
0
2
4
练习3-2:猜猜for i in 5:... 会进入几次循环体,及循环体内的内容会执行几次?
>>> for i in 5:
print("你好!")
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
for i in 5:
TypeError: 'int' object is not iterable
in 是 成员资格运算符,不会像c语言那样使用for循环语法。
练习4:语句:range(5)的运行结果是什么?
>>> range(5)
range(0, 5)
>>> list(range(0,5)) #转换成列表形式
[0, 1, 2, 3, 4]
#注意结果不包括5
练习5:以下两段代码的区别:
#代码段1:
i=0
st="I love you"
while i<len(st):
print(i)
i+=1
#代码段2:
i=0
st="I love you"
lenth=len(st)
while i<lenth:
print(i)
i+=1
代码段1的while循环每执行一次都要求一次字符串的长度,所以直到i不满足循环条件,要求11次字符串的长度,而代码段2只需执行一次求字符串长度的运算。代码段1明显效率是低于2的
练习5:验证用户密码,用户只有三次机会输入密码,若用户输入的密码中含有‘*’号,此次输入不计数
count=3
password='sdut'
while count:
st=input("请输入密码:")
if st==password:
print("密码输入正确,正在核实信息...")
break
elif '*' in st:
print("密码中不能含有'*'号")
continue
else:
print("密码输入错误!")
count-=1
continue
if count==0:
print("您的账号已被冻结")
练习6:求100-999之间的所有水仙花数。(若一个3位数等于其各位数字的立方和,则称这个数为水仙花数)
for i in range(100,1000):
a=i%10
b=i//10%10
c=i//100
if (a**3)+(b**3)+(c**3)==i:
print(i,end=" ")
#运行结果:
153 370 371 407
练习7:篮子里有红黄蓝三种球,其中红3个,黄3个,蓝6个,从篮子里任意摸出8个求,计算摸出球的各种颜色搭配:
print('红球\t黄球\t蓝球')
for red in range(0,4):
for yellow in range(0,4):
for blue in range(2,7): #根据红黄球的数目,蓝色球最少也得是2个
if red+yellow+blue==8:
print(red,'\t',yellow,'\t',blue)
运行结果:
红球 黄球 蓝球
0 2 6
0 3 5
1 1 6
1 2 5
1 3 4
2 0 6
2 1 5
2 2 4
2 3 3
3 0 5
3 1 4
3 2 3
3 3 2