首页 > 解决方案 > Python,我可以在while语句检查条件发生之前格式化用户输入吗?

问题描述

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

我需要得到一个代表我用户的投资组合的浮点数,所以我需要检查输入是否为数字,如果它包含逗号,我想用点更改它。

我有这段代码:

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语句来创建一个循环,但在这种情况下我被困在如何使用replace(",",".")方法上,因为“while not”不接受任何类型的字符串如果我尝试输入“33,18”之类的内容,它只会提示我再次输入

是否有解决方法或更优雅的方法来获得相同的结果?

标签: pythonpython-3.xmathtype-conversionnumber-formatting

解决方案


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)

它看起来不像pythonic代码,但我希望它会对你有所帮助


推荐阅读