【问题标题】:Loop that uses try/except for input and loops until 'done' is entered对输入使用 try/except 的循环并循环直到输入“完成”
【发布时间】:2014-12-13 07:13:22
【问题描述】:

我对 Python 编码有点陌生,我正在尝试编写一个循环,要求输入数字并读取它,直到用户输入“完成”,然后它将退出循环并打印变量:数,计数和平均值。 (不尝试在列表中存储任何内容)

如果用户输入的不是整数,我还希望它打印“无效输入”并继续循环,除非它“完成”。

不幸的是,即使我输入“完成”,它也会返回“无效输入”并继续循环。我究竟做错了什么?谁能指出我正确的方向?

number = 0
count = 0
avg = 0
inp = 0
while True:
    try:
        inp = int(raw_input('Enter a number: '))
        if inp is 'done':    
            number = number + inp
            count = count + 1
            avg = float(number/count)
            break
    except:
        print 'Invalid input'
print number
print count
print float(avg)

【问题讨论】:

  • 你有没有想过int(something)怎么可能等于'done'?????如果inp奇迹般地变成'done',你到底希望number = number + inp达到什么目的??????
  • 旁白:使用except 而不捕获特定异常会使调试代码变得更加困难。
  • 感谢 barak,由于某种原因,int() 部分并没有让我太在意。但是如果我没有把那部分搞砸以便可以将“完成”分配给 inp,我想然后将 inp 添加到 number 然后将该值分配给 number 以便程序稍后打印数字的总和在用“完成”打破循环后进入整个循环的迭代。我现在是否必须将用户输入转换为 if 语句正文中的整数?

标签: python while-loop try-catch except


【解决方案1】:
sum = 0.0
count = 0
while True:
    inp = raw_input('Enter a number: ')
    if inp == 'done':
        break
    try:
        sum += int(inp)
        count += 1
    except ValueError:
        print 'Invalid input'
print sum
print count
if count != 0:  # Avoid division by zero
    print sum / count

【讨论】:

  • 可行,但我想在使用 try/except 时这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
  • 2016-04-06
  • 2021-05-22
  • 2014-11-27
相关资源
最近更新 更多