怎么让这个停在20

时间:2014-03-11 13:03:54

标签: python

我希望这个停在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()

4 个答案:

答案 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的值 - 这就是它永远不会停止的原因。执行forcount正好是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)]

这将为您提供数字列表。