【问题标题】:How to use the number 0 as a stop/break?如何使用数字 0 作为停止/中断?
【发布时间】:2021-11-07 21:27:02
【问题描述】:

代码需要要求用户选择输入任何数字和他/她想要的任意数量的数字并将它们放入一个列表中。 (这不是我要求读者关注的,只是介绍一下代码是如何工作的!)

当用户输入数字0时,程序需要打印列表的总和、平均值、最小值和最大值,不包括零本身。

如果可能,我不想使用任何 Python 导入库。

try:
    user_list = []

    print("PRESS 0 to see: \n\t 1. Sum \n\t 2. Average \n\t 3. Minimum \n\t 4. Maximum")

    while True:
        print("Type number by choice and hit Enter: ")
        user_list.append(int(input()))

except:
    print(user_list)

我尝试的是在 except 语句之后实现 if 语句,它仍然让我有机会输入任意数量的数字,但是当输入一个字母时它停止了。

【问题讨论】:

  • 你的问题似乎在句子中间停止了。

标签: python list input range user-input


【解决方案1】:

user_list = []

print("PRESS 0 to see: \n\t 1. Sum \n\t 2. Average \n\t 3. Minimum \n\t 4. Maximum")

while True:
    value = int(input('Type number by choice and hit Enter: '))
    if value != 0:
        user_list.append(value)
    else: break
sum_of = sum(user_list)
max_of = max(user_list)
min_of = min(user_list)
avg_of = sum_of / len(user_list)

print(sum_of)
print(max_of)
print(min_of)
print(avg_of)

【讨论】:

  • 啊,我明白你在这里做了什么,只要值不等于 0,你就会一直附加数字。我错过了如何在我的代码中实现这部分,这对我帮助很大。非常感谢!
【解决方案2】:

您可以将所有非零值附加到列表中,如果用户输入零值则退出循环:

while True:
    x = int(input("Type number by choice and hit Enter: "))
    if x != 0:
        user_list.append(x)
    else:
        break

如果你只使用try..except块来处理错误输入,你可以把它移到循环中,输入错误值时不会中断执行。

while True:
    try:
        x = int(input("Type number by choice and hit Enter: "))
        if x != 0:
            user_list.append(x)
        else:
            break
    except:
        print("Please enter a number.")

您还可以将提示文本设置为input()函数参数。

【讨论】:

  • 没错,执行并没有停止,即使是一个字母。这让我觉得 try except 不是这段代码的理想解决方案。
【解决方案3】:

如果你想使用异常,可能是变体:

class ProcessList(BaseException):
    pass

try:
    user_list = []

    print("PRESS 0 to see: \n\t 1. Sum \n\t 2. Average \n\t 3. Minimum \n\t 4. Maximum")

    while True:
        value = int(input("Type number by choice and hit Enter: "))
        if 0 == value:
            raise ProcessList()
        user_list.append(value)

except ProcessList:
    s = sum(user_list)
    print(f'avg = {0 if not user_list else s / len(user_list)}, sum = {s}, min = {min(user_list)}, max = {max(user_list)}')

【讨论】:

  • 非常感谢您为制作本课程所做的投入和努力。一旦我在课堂上掌握了更多技能,我肯定会尝试使用它。谢谢!
【解决方案4】:

试一试:

def main():
    values = []
    while True:
        value = int(input('Enter numbers to add them to a list, enter 0 to get summary statistics'))
        if value == 0:
            break
        values.append(value)


    print('Sum: ', sum(values))
    print('Average :', sum(values)/ len(values))
    print('Min : ', min(values))
    print('Max: ', max(values))


main()

在这里我把它变成了一个函数,以便它可以重复使用。 然后我为要添加到的值创建一个列表 -> 然后我想循环直到正确的条件-> 然后我要求输入进行一些验证,即要求输入是整数(如果需要可以将其更改为浮动)-> 然后处理异常!如果为 0,则中断循环(首先处理异常的好习惯)-> 如果它们已通过验证步骤,则将值附加到列表中。

【讨论】:

  • 美丽的代码詹姆斯。我是函数(def)和类的初学者,随着我获得更多知识,我也会尝试你的代码!感谢您的努力。
猜你喜欢
  • 1970-01-01
  • 2011-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-01
  • 1970-01-01
相关资源
最近更新 更多