Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我陷入了真实的循环_Python_Python 2.7 - Fatal编程技术网

Python 我陷入了真实的循环

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(

Python 2.7。我是Python新手,我一直在使用while-True循环。计算工资的简单程序。当以字母形式输入“standard”时,它会捕获错误并再次跳转到“EnteryourRate”行。我希望它只在捕捉到错误的地方重复,而不是重新开始输入所有信息。有人能帮忙吗

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