Python 2.7。我是Python的新手,但在True循环中仍然坚持使用。简单的程序来计算薪水。当“标准”作为字母输入时,它会捕获错误并再次跳至“输入您的价格”行。我希望仅在捕获到错误的地方重复此操作,而不是再次开始重新输入所有信息。有人可以帮忙吗?
while True:
try:
rate = float(raw_input("Enter your rate: "))
error = float(rate)
standard = float(raw_input("Enter total standard hours 100%: "))
error = float(standart)
except:
print 'Not a number'
continue
else:
sum = standard * rate
print sum
谢谢。
答案 0 :(得分:2)
while True:
try:
rate = float(raw_input("Enter your rate: "))
standard = float(raw_input("Enter total standard hours 100%: "))
except ValueError:
print 'Not a number'
else:
sum = standard * rate
print sum
break
您需要在结尾添加一个休息点。另外,当您已经尝试在输入步骤中进行类型转换时,无需编写error = float(..)
。
此外,在error = float(standart)
行中有一个错字。这将导致它永远给出异常。
另一个好的做法是指定您期望的错误类型(ValueError)。这将有助于防止输入错误。
答案 1 :(得分:0)
尝试将标准和费率从同一循环中分离出来。
def get_input(text):
while 1:
try:
value = float(raw_input(text))
break
except:
print 'Not a Number'
return value
rate = get_input("Enter your rate: ")
standard = get_input("Enter total standard hours 100%: ")
sum = standard * rate
print(sum)
这样,仅重新查询失败的值。
答案 2 :(得分:0)
在您的代码中continue
不需要指令,因为else
仅在未引发异常的情况下才执行指令。
但是要在“正”情况下退出循环,请添加break
指令
在print sum
之后。
再说一遍:将standart
更改为standard
。
答案 3 :(得分:-1)
while True:
try:
rate = float(raw_input("Enter your rate: "))
standard = float(raw_input("Enter total standard hours 100%: "))
except ValueError:
print( 'Not a number' )
else:
sum = standard * rate
print(sum)
break