允许用户输入浮点数的问题



我正在编写一个代码,其中用户需要输入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

    您可以尝试在内部存储答案,然后检查小数,如果出现小数,则转换为字符串。

    最新更新