【问题标题】:How to sum numbers entered by the user using Python and display the total?如何对用户使用 Python 输入的数字求和并显示总数?
【发布时间】:2020-06-16 18:02:34
【问题描述】:

我的任务是:

编写一个重复读取数字直到用户输入“完成”的程序。输入“完成”后,打印出总数、计数和平均值。如果用户输入的不是数字,请使用 try 和 except 检测他们的错误并打印错误消息并跳到下一个数字。

我的想法是将用户输入的数字附加到列表中,然后循环遍历列表以对数字求和并使用此总数除以列表的长度来计算平均值。那样有用吗?但是,我的列表不附加整数,只附加字符串。此外,列表中还附加了“完成”一词。

我的代码是:

x=[ ]
while True:
    line = input('enter a number: ')
    x.append(line)
    if line == 'done':
        break

我想要的输出是:

Enter a number: 4

Enter a number: 5

Enter a number: bad data

Enter a number: 7

Enter a number: done

16 3 5.333333333333333

【问题讨论】:

  • raw_input() 按原样读取字符串并返回字符串,但 input() 需要 Python 的术语,例如 1 用于 int,而 'done' 用于字符串。使用raw_input()。对于数字使用int() 并捕获转换异常
  • @Paul-AG raw_input() 仅适用于 python2。
  • @Paul-AG 请注意,raw_input 仅存在于 Python 2 中。在 Python 3 中,input 如您所愿返回一个字符串。

标签: python


【解决方案1】:

我的想法是将用户输入的数字附加到列表中,然后循环遍历列表以求和该数字并使用此总数除以列表的长度来计算平均值。这行得通吗?

是的,这听起来像是完美的解决方案。

但是,我的列表不附加整数,只附加字符串。

在附加之前将输入转换为int

x.append(int(line))

如果line 无法转换为int,这将失败,因此您可能实际上想要:

try:
    x.append(int(line))
except ValueError:
    pass

此外,列表中还附加了“完成”一词。

检查字符串'done' 之前你追加它。

if line == 'done':
    break
try:
    x.append(int(line))
except ValueError:
    pass

最后,您可以使用sumlen 进行计算。

【讨论】:

    【解决方案2】:

    这是你可以做的,假设用户只能输入整数:

    x=[]
    while True:
        try:
            line = input('enter a number: ')
            if line == 'done':
                break
            x.append(int(line))
        except:
            pass
    print(sum(x),len(x),sum(x)/len(x))
    

    如果用户应该能够输入浮点数:

    x=[]
    while True:
        try:
            line = input('enter a number: ')
            if line == 'done':
                break
            x.append(float(line))
        except:
            pass
    print(sum(x),len(x),sum(x)/len(x))
    

    【讨论】:

    • 我知道我无法对字符串列表求和。我问这些问题是因为我没有设法使用 int() 将输入转换为整数。我现在明白我的错误了。无论如何,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    相关资源
    最近更新 更多