Python,我可以在while语句检查条件发生之前格式化用户输入吗?

2024-06-06 12:34:55 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个愚蠢的问题,但是:

我需要得到一个代表我用户的公文包的浮点数,所以我需要检查输入是否是一个数字,如果它包含一个逗号,我想用一个点来改变它

我有一段代码:

portfolio_size = input('Insert portfolio size:')
portfolio_size = portfolio_size.replace(",", ".")

while not(portfolio_size.isnumeric()):
    print("\nInput Wrong \nPlease try again!")
    portfolio_size = input('Insert portfolio size:').replace(",",".") #This doesn't work
val = float(portfolio_size)
print(val)

我曾想过使用while not语句来创建一个循环,但在这种情况下,我陷入了如何使用替换(“,”,“)方法的困境,因为“while not”不接受任何类型的字符串,如果我尝试输入类似“33,18”的内容,它只会再次提示我输入

有没有一种解决方法或者更优雅的方法来获得相同的结果


Tags: 方法用户inputsizenot代表数字val
2条回答

如果转换不起作用,您可以尝试转换为浮点并捕获异常:

portfolio_size = ''
valid = False

while not valid:
    portfolio_size = input('Insert portfolio size:')

    try:
        portfolio_size = float(portfolio_size.replace(",", "."))
    except ValueError:
        print("\nInput Wrong \nPlease try again!")
        continue

    valid = True

print(portfolio_size)

isnumeric函数不检查它是否为float(它仅适用于int

试试这个:

portfolio_size = input('Insert portfolio size:')
portfolio_size = portfolio_size.replace(",", ".")

while True:
    if portfolio_size.isnumeric():
        break
    
    try:
        float(portfolio_size)
    except ValueError:
        print("\nInput Wrong \nPlease try again!")
        portfolio_size = input('Insert portfolio size:').replace(",",".") #This doesn't work
        continue
    
    break
    
val = float(portfolio_size)
print(val)

它看起来不像Python代码,但我希望它能帮助您

相关问题 更多 >