【发布时间】: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