我正在编写一个代码,其中用户需要输入float作为输入,以便计算循环的压力。我处理的东西作为字符串和非负输入,但不能弄清楚如何使我的用户输入浮点数(2.5,1.6等)没有得到一个错误或陷入循环。下面是我的代码:
psrc = input("Enter starting pressure for source: ") # Druck Quelle [Pa] / pressure source
while psrc.isnumeric() == False or float(psrc) <=0 or float(psrc) >=3:
print ("Starting pressure must be numeric value in range 0-3. Please enter valid pressure value.")
psrc = input("Enter new pressure: ")
编辑:明白了。谢谢大家的建议。通过添加一个函数来检查值并将布尔值返回给循环并继续计算,问题就解决了。功能:
def is_float(n):
try:
float(n)
return True
except:
return False
新的循环定义:
psrc = input("Enter starting pressure for source: ") # Druck Quelle [Pa] / pressure source
while is_float(psrc) != True or float(psrc) <=0 or float(psrc) >=3:
print ("Starting pressure must be numeric value in range 0-3. Please enter valid pressure value.")
psrc = input("Enter new pressure: ")
看看
x=False
while not x:
try:
psrc = float(input("Enter starting pressure for source: ")) # Druck Quelle [Pa] / pressure source
x=True
except ValueError:
print('Enter valid decimal number.')
print(psrc)
我想str(int(psrc)).isnumeric()
会帮你解决这个问题。
我可以提供两种方法:1 .
def is_it_float(num:str):
if num.count(".")>1:
return False
num = num.split(".")
for i in num:
if not i.isnumeric():
return False
return True
def is_it_float(num:str):
try:
float(num)
return True
except ValueError:
return False
psrc.isnumeric()
检查字符串是否只包含数字,因此由于小数分隔符,它返回False
。你需要定义一个函数来检查你的字符串是否是浮点数,并使用它:
while is_string_float(psrc) == False or float(psrc) <=0 or float(psrc) >=3:
...
Is string a float:检查一个字符串是否可以在Python中转换为float
您可以尝试在内部存储答案,然后检查小数,如果出现小数,则转换为字符串。