我被困在True循环中

时间:2018-06-30 10:58:44

标签: python python-2.7

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

谢谢。

4 个答案:

答案 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