零基础学习Python 作业 第9章

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

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

答:5次

1 下面的循环会打印多少次”I Love FishC”?

1.  for i in 5:
2.      print('I Love FishC')

Error, in 是成员资格运算符, 5 不能迭代 
TypeError: ‘int’ object is not iterable

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

 break, 如果满足条件,则终止循环 
continue, 如果满足条件,则跳出,重新开始循环

3 请谈下你对列表的理解?

 列表是一个元素以逗号分割,以中括号包围的,有序的,可修改的序列。

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

0---9

5. 目测以下程序会打印什么?

  1. while True:
  2.     while True:
  3.         break
  4.         print(1)
  5.     print(2)
  6.     break
  7. print(3)

2

3

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

while Ture:

    循环体

    

同样用于游戏实现,因为游戏只要运行着,就需要时刻接收用户输入,因此使用永远为真确保游戏“在线”。操作系统也是同样的道理,时刻待命,操作系统永远为真的这个循环叫做消息循环。另外,许多通讯服务器的客户端/服务器系统也是通过这样的原理来工作的。

     

所以永远为“真”虽然是“死循环”,但不一定是坏事,再说了,我们可以随时用 break 来跳出循环!

7. 【学会提高代码的效率】你的觉得以下代码效率方面怎样?有没有办法可以大幅度改进(仍然使用while)

  1. i = 0
  2. string = 'ILoveFishC.com'
  3. while i < len(string)):
  4.     print(i)
  5.     i += 1

修改后:

  1. i = 0
  2. string = 'ILoveFishC.com'
  3. length = len(string)
  4. while i < length:
  5.     print(i)
  6.     i += 1  

动手题:

0. 设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含"*"则不计算在内。

print('========密码校验系统========')
count = 3
password = '5201314'
while count:
key = input('请输入密码:')
if key == password:
print('祝贺!密码正确!')
break
elif '*' in key:
print('密码中不能含有字符\'*\'!你还有', count, '次机会!', end = '.')
continue
else:
if count != 0:
print('密码输入错误!你还有', count - 1, '次机会', end = '.')
else:
print('密码输入错误,请重新运行该测试系统.')

count -= 1

Python 2.7
#coding=UTF-8
print('========密码校验系统========')
count = 3
password = '5201314'
while count:
key = raw_input('请输入密码:')
if key == password:
print('祝贺!密码正确!')
break
elif '*' in key:
print (u'密码中不能含有字符\'*\''),"还有",str(count) + "次机会!"
continue
else:
if count != 0:
print ('密码输入错误!'),"还有",str(count-1) + "次机会!"
else:
print('密码输入错误,请重新运行该测试系统.')
count -= 1

 

1. 编写一个程序,求 100~999 之间的所有水仙花数。

如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数

  1. for i in range(100, 1000):
  2.     sum = 0
  3.     temp = i
  4.     while temp:
  5.         sum = sum + (temp%10) ** 3
  6.         temp //= 10         # 注意这里要使用地板除哦~
  7.     if sum == i:
  8.         print(i)
print('==========水仙花数计算器[100~999]==========')
temp = input('请输入一位3位正整数:')
while not temp.isdigit():
print('输入错误!')
temp = input('请重新输入一位3位正整数:')
num = int(temp)
# 求出各位十位百位
ge = num % 10
bai = num // 100
shi = ((num - bai * 100) - ge) / 10

if num == ge**3 + shi**3 + bai**3:
print('数', num, '是水仙数!\n')
else:
print('数', num, '不是水仙数!\n')

print('[100~1000] 区间的水仙数有:')
for i in range(100, 1000):
temp = i
sum = 0
while temp:
# 先求个位的立方,再把三位数去掉最后一位,又求10位的立方,
# 在去掉10位,求百位的立方
sum += (temp % 10) ** 3
temp = temp // 10

if sum == i:
print(i)

 

2. 三色球问题

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

print('==========RGBball Select==========')
# Red ball [0,1,2,3] range(0, 4)
# Blue ball [0,1,2,3] range(0, 4)
# Green ball [2, 3, 4, 5, 6] range(2, 7)
# Restrictions: R + B + G == 8
for red in range(0, 4):
for blue in range(0,4):
for green in range(2, 7):
if red + blue + green == 8:
print( 'Red:', red, ' ', 'Blue:', blue, ' ', 'Green:', green )

print('==========RGBball Select==========')
# Red ball [0,1,2,3] range(0, 4)
# Blue ball [0,1,2,3] range(0, 4)
# Green ball [2, 3, 4, 5, 6] range(2, 7)
# Restrictions: R + B + G == 8

for red in range(0, 4):
for blue in range(0,4):
for green in range(2, 7):
if red + blue + green == 8:
keys = {'Red':red,'blue':blue,'green':green}
print(keys)

==========RGBball Select==========
{'blue': 2, 'green': 6, 'Red': 0}
{'blue': 3, 'green': 5, 'Red': 0}
{'blue': 1, 'green': 6, 'Red': 1}
{'blue': 2, 'green': 5, 'Red': 1}
{'blue': 3, 'green': 4, 'Red': 1}
{'blue': 0, 'green': 6, 'Red': 2}
{'blue': 1, 'green': 5, 'Red': 2}
{'blue': 2, 'green': 4, 'Red': 2}
{'blue': 3, 'green': 3, 'Red': 2}
{'blue': 0, 'green': 5, 'Red': 3}
{'blue': 1, 'green': 4, 'Red': 3}
{'blue': 2, 'green': 3, 'Red': 3}
{'blue': 3, 'green': 2, 'Red': 3}

 

posted @ 2018-09-20 15:28  蘑菇慢慢  阅读(212)  评论(0)    收藏  举报