008 Python初学笔记--分支和循环之练习题

练习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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值