python - 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”之类的内容,它只会提示我再次输入
是否有解决方法或更优雅的方法来获得相同的结果?
解决方案
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代码,但我希望它会对你有所帮助
推荐阅读
- excel - For循环正在更改迭代器并在第一次迭代VBA后停止
- go - 如何字符串化 io.FileInfo
- javascript - Reactjs 函数参数
- java - 在 Spring Boot 中,如何配置一些侦听器使用自动确认而其他侦听器使用手动确认
- flutter - 如何在 Flutter 中使用 Column 在屏幕中间显示文本?
- java - 使用 WebSecurityConfigurerAdapter 在 Spring boot 2.x 中进行身份验证处理
- c - 该公式在数组结构中不起作用
- python - 在 Tor 上使用请求返回 getaddrinfo 失败
- python - Tensorfllow:从更改的模型加载检查点
- python - 此代码如何在连接时显式忽略标头?