【榆钱】小甲鱼python课后习题第9课

【仅供学习交流使用,如有错误感谢指出】

0. 下面的循环会打印多少次"I Love FishC"?

for i in range(0,10,2):
    print('I Love FishC')

打印5次

【解】

range(start,end,scan):
start表示开始,end表示结束,scan表示跳的步调,
注意是前开后闭区间而且默认scan为0
如题则为[0,2,4,6,8]  

 

1.下面的循环会打印多少次"I Love FishC"?
for i in 5:
    print('I Love FishC')

一次也不能,因为语法错误,in后边应该是个集合,而5只是个整型数

 

2.回顾一下 break 和 continue 在循环中起到的作用?

break为 1.跳出循环,进行下一步 2.结束程序
continue为 1.跳出循环的这一步,然后进行下一步循环 2.继续下一步

 

3.请问 range(10) 生成哪些数?

0,1,2,3,4,5,6,7,8,9

【解】

range(start,end,scan)

start表示开始处默认为0,scan表示跳的步调默认为0,且为前开后闭区间

 

4.什么情况下我们要使循环永远为真

当要不断使用程序时,比如想要多次输入成绩查询成绩等级

【解】

小甲鱼:用于游戏实现。
因为游戏只要运行着,就需要时刻接收用户输入,
因此使用永远为真确保游戏“在线”。
操作系统也是同样的道理,时刻待命,
操作系统永远为真的这个循环叫做消息循环。
另外,许多通讯服务器的客户端/服务器系统也是通过这样的原理来工作的。     
所以永远为“真”虽然是“死循环”,但不一定是坏事,
再说了,我们可以随时用 break 来跳出循环

 

5.【学会提高代码的效率】你觉得以下代码效率方面怎样?
有没有办法可以大幅度改进(仍然使用while)?
i = 0  
string = 'ILoveFishC.com'  
while i < len(string)):  
  print(i)   
  i+=1

i=0
string = 'ILoveFishC.com'
num=len(string)
while i     print(i)
    i=i+1

 

动动手:

0.设计一个验证用户密码程序,用户只有三次机会输入错误,

不过如果用户输入的内容中包含"*"则不计算在内。
answer='123456'
i=4
flag=1
while i>0 and flag==1:
    pwd=input('Please enter the password')
    if pwd==answer:
        print('welcome!')
        flag=0
    elif '*' in pwd:
        print('password mistake')
    else:
        print('you have ',i-1,' more chances')
        i-=1
        

1.编写一个程序,求 100~999 之间的所有水仙花数。
如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。
例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。

解法1
for a in range(1,10):
    for b in range(0,10):
        for c in range(0,10):
            if a**3+b**3+c**3==a*100+b*10+c:
                print(a*100+b*10+c)

解法2
print("100-999之间的水仙花数为:")
for a in range(100,999):                       # 定义一个100-999之间的数
    i = int(a % 10)                              # 取出个位
    j = int(a/100)                               # 取出百位
    k = int((a - j*100)/10)                  # 通过计算取出十位
    if i**3 + j**3 + k**3 == a:            # 计算幂之和,与数本身进行判断
        print(a)

解法3
for i in range(100,1000):
    if ((i%10)**3) + ((i//100)**3) + (((i-(i//100)*100)//10)**3) == i:
        print(i)
【解】

注意解法三容易出现错误,一定要用地板除法,如果用真除法的话要改成:

((i%10)**3) + (int(i/100)**3) + (int((i-int(i/100)*100)/10)**3) == i

 

2.三色球问题
有红、黄、蓝三种颜色的球,其中红球 3 个,黄球 3 个,蓝球 6 个。
先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,
编程计算摸出球的各种颜色搭配

i=0
for red in range(0,4):
    for yellow in range(0,4):
        for blue in range(0,7):
            if red+yellow+blue==8:
                print('red:',red,' yellow:',yellow,' blue:',blue)

你可能感兴趣的:(【榆钱】小甲鱼python课后习题第9课)