Python EOR/While回路

Python EOR/While回路,python,eoferror,Python,Eoferror,我试图让这段代码运行并接受输入中的小数/避免EOFError,因为如果我删除不需要的except代码,程序将调用语法。 是否有其他方法可以编写循环 def getWage(self): while True: try: self.wages = float(input("Enter your hourly wage: ")) if self.wages <= 0: p

我试图让这段代码运行并接受输入中的小数/避免EOFError,因为如果我删除不需要的except代码,程序将调用语法。 是否有其他方法可以编写循环

def getWage(self):
    while True:
        try:
            self.wages = float(input("Enter your hourly wage: "))
            if self.wages <= 0:
                print("Value must be a number greater than 0!")
                continue
        except EOFError:
            print("Value must be a number greater than 0!")
            continue
        else:
            return self.wages
def getWage(self):
尽管如此:
尝试:
self.wages=float(输入(“输入您的小时工资:”))

如果self.sweels当输入值不是预期的浮点值,而不是
eoferor
时,捕获的异常应该是
ValueError
。但是要回答您的问题,是的,您需要检查
ValueError
,因为您在循环中将输入值显式转换为float。如果您试图传递非数字值,如字符串,您将得到
ValueError:无法将字符串转换为float:“一百美元”

您可以重写循环,这样就不会显式地将输入值转换为float()。例如,您可以在if语句中检查if
self.sweels.isnumeric()
,而不是在try块中使用except

def getWage(self):
    while True:
        self.wages = input("Enter your hourly wage: ")
        if not self.wages.replace(".", "", 1).isdigit() or float(self.wages) <= 0:
            print("Value must be a numeric value greater than 0!")
            continue
        else:
            return self.wages

当输入值不是预期的浮点值时,捕获的异常应该是
ValueError
,而不是
eoferor
。但是要回答您的问题,是的,您需要检查
ValueError
,因为您在循环中将输入值显式转换为float。如果您试图传递非数字值,如字符串,您将得到
ValueError:无法将字符串转换为float:“一百美元”

您可以重写循环,这样就不会显式地将输入值转换为float()。例如,您可以在if语句中检查if
self.sweels.isnumeric()
,而不是在try块中使用except

def getWage(self):
    while True:
        self.wages = input("Enter your hourly wage: ")
        if not self.wages.replace(".", "", 1).isdigit() or float(self.wages) <= 0:
            print("Value must be a numeric value greater than 0!")
            continue
        else:
            return self.wages

张贴StackTrace请张贴a,然后请张贴错误。如何调用该函数?修复并添加了我的全部代码。
eoferor
不是他们不键入浮点的例外。您将获得
ValueError
。如果没有
,您将无法进行
尝试
,除了
。这是一个语法错误,因为它毫无意义。(除非您最后使用的是
,但我怀疑您是否需要它。)如果您不想使用
而不是
,则必须更改您的代码,使其不使用
或尝试使用
。发布StackTrace请发布a并发布错误。如何调用该函数?修复并添加了我的全部代码。
eoferor
不是他们不键入浮点的例外。您将获得
ValueError
。如果没有
,您将无法进行
尝试
,除了
。这是一个语法错误,因为它毫无意义。(除非您最后使用的是
,但我怀疑您是否需要它。)如果您不想使用
而不是
,则必须更改代码,使其不使用
try
。有没有一种方法可以在不使用try/else的情况下纠正此循环?太好了!如果您需要任何进一步的说明,请参阅我的编辑。它可以在Python 2中抛出一个
EOFError
,而不是在Python 3中。有没有办法不使用try/else纠正此循环?太好了!如果您需要任何进一步的澄清,请参阅我的编辑。它可以在Python 2中抛出一个
EOFError
,但在Python 3中不会。
def getWage(self):
while True:
    try:
        self.wages = float(input("Enter your hourly wage: "))
        if self.wages <= 0:
            print("Value must be a number greater than 0!")
            continue
    except ValueError:
        print("Value must be an integer or a float!")
        continue
    else:
        return self.wages