Python 如何使其在输入字符串而不是浮点时打印出来;请输入一个有效的数字";

Python 如何使其在输入字符串而不是浮点时打印出来;请输入一个有效的数字";,python,Python,如果输入的字符串不是浮点数,如何显示错误消息“请输入有效数字”?因为当我输入一个字符串时,我会得到一个错误: ValueError:无法将字符串转换为浮点: 我的代码: if unknown == 'S': if units in ('si', 'Si'): u = float(input("Enter the initial velocity in m/s :")) v = float(input("Enter the accelerat

如果输入的字符串不是浮点数,如何显示错误消息“请输入有效数字”?因为当我输入一个字符串时,我会得到一个错误:

ValueError:无法将字符串转换为浮点:

我的代码:

 if unknown == 'S':
  if units in ('si', 'Si'):  
    u = float(input("Enter the initial velocity in m/s :"))
    v = float(input("Enter the acceleration in m/s : "))
    t = float(input("Enter seconds : "))
  else:
    u = float(input("Enter the initial velocity in yards/s :"))
    v = float(input("Enter the acceleration in yards/s : "))
    t = float(input("Enter the time take in s : "))

    
  S = 0.5 * (u + v) * t
  print("S is " , S)

使用
try except
块创建一个简单函数,当出现
ValueError
时,打印“请输入有效数字”

例如:

def checkFloat(num):
尝试:
返回浮点(num)
除值错误外:
return“请输入有效数字”
打印(支票浮动('1.23445'))
打印(支票浮动('s'))

您应该执行错误处理

例如:

while True:
  try:
    your_variable = float(input("Input string"))
    break
  except:
    print("please input a valid number")
输出

could not convert string to float: 'bad string'

Python中的方法可以是“请求原谅比请求许可更好”,因此捕捉错误并循环。这是所有数字输入的常见操作,因此它自然意味着一个辅助功能:

def float_输入(提示):
尽管如此:
尝试:
返回浮动(输入(提示))
除值错误外:
打印('需要编号,请重新输入')
然后您的主代码将如下所示:

 if unknown == 'S':
  if units.lower() == 'si':  
    u = float_input("Enter the initial velocity in m/s :")
    v = float_input("Enter the acceleration in m/s : ")
  else:
    u = float_input("Enter the initial velocity in yards/s :")
    v = float_input("Enter the acceleration in yards/s : ")

  t = float_input("Enter the time taken in s : ")
    
  S = 0.5 * (u + v) * t
  print("S is " , S)
您提示的
v
错误-根据公式,它应该是最终速度,而不是加速度

 if unknown == 'S':
  if units.lower() == 'si':  
    u = float_input("Enter the initial velocity in m/s :")
    v = float_input("Enter the acceleration in m/s : ")
  else:
    u = float_input("Enter the initial velocity in yards/s :")
    v = float_input("Enter the acceleration in yards/s : ")

  t = float_input("Enter the time taken in s : ")
    
  S = 0.5 * (u + v) * t
  print("S is " , S)