Python 我陷入了真实的循环
Python 2.7。我是Python新手,我一直在使用while-True循环。计算工资的简单程序。当以字母形式输入“standard”时,它会捕获错误并再次跳转到“EnteryourRate”行。我希望它只在捕捉到错误的地方重复,而不是重新开始输入所有信息。有人能帮忙吗Python 我陷入了真实的循环,python,python-2.7,Python,Python 2.7,Python 2.7。我是Python新手,我一直在使用while-True循环。计算工资的简单程序。当以字母形式输入“standard”时,它会捕获错误并再次跳转到“EnteryourRate”行。我希望它只在捕捉到错误的地方重复,而不是重新开始输入所有信息。有人能帮忙吗 while True: try: rate = float(raw_input("Enter your rate: ")) error = float(rate) standard = float(
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
先谢谢你
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)。这将有助于防止诸如打字错误之类的事情。尝试将标准和速率从同一个循环中分离出来,如下所示
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)
这样,只会重新查询失败的值。代码中的
继续
指令不需要,因为其他
指令仅在未引发异常时执行
但要在“肯定”情况下退出循环,请添加break
指令
在之后打印总和
还有一句话:将
standart
更改为standard
在其他末尾添加break
,在打印总和之后,它确实有意义,而且确实有效。非常感谢。你能解释一下为什么在“while”之后加上“1”吗?我很高兴它起作用了。在python中,1将计算为True,0将计算为false。所以while 1等于while True。
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