在Python中确定输入是否为数字

在Python中确定输入是否为数字,python,Python,我创建了一个要求用户输入数字的代码。以下代码仅允许用户输入数字 while True: strainx =input("Please enter a value for strain in the x-direction: ") try: num_format=float(strainx) break except ValueError: print("Invalid Entry") strainx=float(stra

我创建了一个要求用户输入数字的代码。以下代码仅允许用户输入数字

while True:
    strainx =input("Please enter a value for strain in the x-direction: ")

    try:
        num_format=float(strainx)
        break
    except ValueError:
        print("Invalid Entry")

strainx=float(strainx)
这只是代码的一部分。我有几个输入,它们的代码完全相同,但名称不同。其中之一是为“v”输入一个值

最后一行'strainx=float(strainx)'对我来说没有意义,因为它将strainx格式化为一个float,但是输入应该只接受float

此外,在代码中还有一个涉及v**2的方程

如果我去掉'strainx=float(strainx)'行和所有其他输入(包括v)的同一行,则涉及v**2的方程式不再有效,并给出错误:

TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'

谁能帮我解释一下为什么会这样?当然,我应该能够在没有错误的情况下删除'strainx=float(strainx)'行?

问题在于,在
try
块中,您分配了一个新变量。如果您重新分配给
straintx
,则无需执行更多操作

while True:
    strainx = input("Please enter a value for strain in the x-direction: ")
    try:
        strainx = float(strainx)
        break
    except ValueError:
        print("Invalid Entry")
最后一行“strainx=float(strainx)”对我来说没有意义,因为它 是否将strainx格式化为浮点,但输入应仅为 无论如何,接受浮动

它不是格式化,而是从字符串创建一个浮点。Python中的对象定义了类型,这些类型是它们在内部的表示方式。如果您的变量是字符串,您不能像使用浮点一样使用它,您必须明确地告诉Python您希望从它生成一个浮点,您可以这样做。执行此操作时,它将返回一个需要使用的新浮点值,而不是字符串。通过重新指定相同的名称,可以实现所需的效果

或者,从那一点开始就使用新名称