简单的python迭代练习..尝试和除外

时间:2016-08-26 22:03:01

标签: python

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

这就是我所拥有的。

total = 0
count = 0
average = 0
while True:
    number = input("Enter a number:")
    if number == "done":
        break
    try:
        total += numbers
        count += 1
        average = total / len(number)
    except:
        print ("Invalid input")
    continue
print (total, count, average)

当我运行它时,由于某种原因,我总是得到无效输入。我的除外部分一定是错的。

编辑: 这就是我现在所拥有的,它的工作原理。但是,我确实需要尝试,除非是非数字。

total = 0
count = 0
average = 0
while True:
    number = input("Enter a number:")
    if number == "done":
        break
    total += float(number)
    count += 1
    average = total / count
print (total, count, average)

我想我明白了?!?!

total = 0
count = 0
average = 0
while True:
    number = input("Enter a number:")
    try:
        if number == "done":
            break
        total += float(number)
        count += 1
        average = total / count
    except:
        print ("Invalid input")
print ("total:", total, "count:", count, "average:", average)
如果这花了我一个小时,我应该感到恐慌吗? 这不是我的第一种编程语言,但它已经有一段时间了。

4 个答案:

答案 0 :(得分:0)

问题是当您尝试使用输入时:

try:
    total += numbers

首先,没有值数字;你的变量是单数,而不是复数。其次,您必须将文本输入转换为数字。试试这个:

try:
    total += int(number)

答案 1 :(得分:0)

这是因为当number是int时没有len(数字)。 len用于查找列表/数组的长度。您可以通过注释try / except / continue来自行测试。我认为下面的代码更像是你所追求的?

total = 0
count = 0
average = 0
while True:
    number = input("Enter a number:")
    if number == "done":
        break
    try:
        total += number
        count += 1
        average = total / count
    except:
        print ("Invalid input")
    continue
print (total, count, average)

请注意仍有一些问题。例如,您确实必须在输入框中键入“done”以便不会出现错误,但这会修复您的初始问题,因为您有len(数字)而不是平均值。还要注意你有+ =数字。当你的变量是数字而不是数字。小心你的变量名称/用法。

答案 2 :(得分:0)

解决方案......

total = 0
count = 0
average = 0
while True:
    number = input("Enter a number:")
    if number == "done":
        break
    else:
        try:
            total += int(number)
            count += 1
            average = total / count
        except ValueError as ex:
            print ("Invalid input")
            print('"%s" cannot be converted to an int: %s' % (number, ex))
print (total, count, average)

代码问题:

  • 总计+ =数字#数字不存在;是数字
  • len(number)# number 是一个字符串。对于您需要的平均值
  • 如果 已完成 ,则处理
  • 使用try ...除了ValueError,以便在将数字转换为int时捕获问题。
  • 此外,您可以使用try ...除了ValueError作为ex,以使错误消息更易于理解。

答案 3 :(得分:0)

我知道这已经很老了,但是以为我会把2美分扔进去(因为多年以后我本人也在使用相同的示例进行学习)。您可以尝试:

Proxy-Authorization

我发现这是一种清洁剂(个人比较容易使用)。