【发布时间】:2019-06-20 05:05:11
【问题描述】:
我的权重函数中的 for 循环无法正常工作。目标是让用户输入他们想要评估的 PIN 的数量,并且程序应该提示用户(多次)输入 9 位数的 PIN。 PIN 的“权重”是两者之间绝对差的总和 相邻数字。(例如:1234=abs(1-2)+abs(2-3)+abs(3-4)=3)
我让程序询问用户有关 PIN 的信息,但是一旦我定义了重量,我就有问题了。
在每次输入 PIN 后,我希望它告诉用户“重量”。 我在返回后在 for 循环中调用函数:
for i in range(pin_num):
prompt_user()
weight(pin)
def weight(value):
int_values = [] # Create an empty list to store the integers
for char in value:
int_values.append(int(char)) # Converts char to int and adds to list.
weight=abs(int_values[0] - int_values[1]) + abs(int_values[1]
- int_values[2])+ abs(int_values[2]
- int_values[3])+abs(int_values[3] - int_values[4])+abs(int_values[4]
- int_values[5])+abs(int_values[5] - int_values[6])+abs(int_values[6]
- int_values[7])+abs(int_values[7] - int_values[8])
#pin_weight = weight(pin)
print('The PIN {} has a weight of {}'.format(pin,weight))
return
【问题讨论】:
-
失败的输入是什么?该输入的正确结果是什么?为什么在不同的缩进处有注释,为什么在for循环里面有return?
-
缩进很重要,但您也希望函数只返回一个值。然后 value = weight(pin) 这样你就可以编写测试了。当你想打印时,你可以很容易地在函数外打印。 (不要对不同的东西使用相同的名称,重量既是一个函数也是一个数字。
标签: python