题目二十
定义一个具有生成器的类,它可以在给定的范围0和n之间迭代可被7整除的数字。
代码实现
class devide_7():
def devides(self,n):
for i in range(1,n+1):
if i % 7 == 0:
yield i
devide = devide_7()
for i in devide.devides(int(input("请输入数字:"))):
print(i)
运行结果
请输入数字:20
7
14
题目二十一
机器人从原始点(0,0)开始在平面上移动。机器人可以用给定的步骤向上、下、左、右移动。
方向后面的数字是步骤。请编写一个程序来计算从当前位置到移动序列和原始点的距离。如果距离是浮点数,那么只需打印最近的整数。
示例:如果给出以下元组作为程序的输入:
UP 5
DOWN 3
LEFT 3
RIGHT 2
结果输出为:
2
代码实现
import math
position = [0,0]
def distance(position):
dis = round(math.sqrt(position[0]**2+position[1]**2))
return dis
while True:
s = input("请输入机器人移动的方向和步数,以空格相隔:").split()
if not s:
break
if s[0] == 'UP':
position[1] += int(s[1])
if s[0] == 'DOWN':
position[1] -= int(s[1])
if s[0] == 'RIGHT':
position[0] += int(s[1])
if s[0] == 'LEFT':
position[0] -= int(s[1])
dist = distance(position)
print(dist)
运行结果
请输入机器人移动的方向和步数,以空格相隔:UP 5
请输入机器人移动的方向和步数,以空格相隔:DOWN 3
请输入机器人移动的方向和步数,以空格相隔:LEFT 3
请输入机器人移动的方向和步数,以空格相隔:RIGHT 2
请输入机器人移动的方向和步数,以空格相隔:
2
总结
1.类的运算中,对于行为的定义就像是对整个代码中的函数的定义,需要自己的参数和运行结果,除了继承自身的参数,还可以重新定义(就像代码中函数的参数定义)。
2.另外一个return和yeild的区别和联系。两者均可以实现对数值的返回,但是yeild更像是返回和继续的结合,可以告诉程序,在返回值之后,在yeild标记的地方继续进行运算。而return则是返回之后,就中断程序。