我希望这个停在20.我的意思是,当它要求你输入另一个数字时,它应该在第20次之后停止。 目前我有一个累积计数器,当它达到20时,它打印“输入一个更多的数字”。它是在第20次这样做,但之后它继续要求你输入更多的数字。我想在第20次之后停止要求输入。 谢谢。这是一个较大的家庭作业问题。
def main ():
print()
print("Finds the lowest, highest, average, and total to 20 numbers.")
print()
number, count, numberlist = getnumber()
print("Stop.")
def getnumber ():
count = 0
numberlist = []
for count in range(20):
count = count + 1
number = float(input("Please enter another number : "))
numberlist.append(number)
while count != 20:
number = float(input("Please enter one more number : "))
numberlist.append(number)
return number, count
main()
答案 0 :(得分:0)
您可以按照以下方式执行此操作:
def get_numbers(count=20):
numbers = []
numbers.append(float(input("Please enter a number : "))) # first
for _ in range(count-2):
numbers.append(float(input("Please enter another number : "))) # next 18
numbers.append(float(input("Please enter one more number : "))) # last
return numbers
请注意,使用for
循环时,您不需要手动递增循环计数器。此外,没有必要return count
;你已经知道会有多少。
答案 1 :(得分:0)
首先,请注意,您没有更改count
循环中while
的值 - 这就是它永远不会停止的原因。执行for
后count
正好是19,之后永远不会达到20。
其次,您根本不需要while
- for
循环可以进行20次迭代并停止
def getnumber ():
count = 0
numberlist = []
for count in range(20):
count = count + 1
number = float(input("Please enter another number : "))
numberlist.append(number)
return number, count, numberlist
答案 2 :(得分:0)
这是另一种选择(你的方法扩展)
limit = 5
def main ():
print("Finds the lowest, highest, average, and total to {} numbers.".format(limit))
numbs = getnumber()
print(numbs)
print("lowest:", min(numbs))
print("highest:", max(numbs))
print("avg:", sum(numbs)/len(numbs))
print("total:", sum(numbs))
print("Stop.")
def getnumber ():
numberlist = []
for count in range(limit):
if count == limit-1:
number = float(input("Please enter one more number : "))
numberlist.append(number)
else:
number = float(input("Please enter another number : "))
numberlist.append(number)
return numberlist
main()
输出
Finds the lowest, highest, average, and total to 5 numbers.
[6.0, 3.0, 8.0, 4.0, 2.0]
('lowest:', 2.0)
('highest:', 8.0)
('avg:', 4.6)
('total:', 23.0)
Stop.
答案 3 :(得分:0)
您发布的代码存在一些问题。首先你应该缩进return语句,因此它是getnumber的一部分。其次,您返回两个值,但在main中解压缩三个值。如果我修复了这两件事,代码就可以了。 for循环之后count为20的原因是你在循环外声明了count,所以每次迭代计数都会被设置为下一个整数然后再增加
count = count + 1
如果你在循环中没有额外的增量,那么在for循环结束后count将是19,因为range(N)不包括N.
您可以使用列表解析重写代码以获得非常简洁的版本
def getnumber(prompt, n):
return [float(input(prompt)) for _ in range(n)]
这将为您提供数字列表。