我正在尝试在 python 2.7 中输入并允许它区分字符串和整数

I am trying to take an input in python 2.7 and allow it to distinguish between strings and integers

我是新手,尝试过搜索功能,但找不到合适的方法,如果能提供任何支持,我将不胜感激。

我想修改此代码以允许用户输入数字或单词。如果 Var a 和 b 是数字,代码将测试一个 int 并比较数字的大小,但是如果选择了一个单词,它将测试一个字符串并打印所涉及的字符串。我试图使代码相当简单。

varA = raw_input('Enter a number or string ')

varB = raw_input('Enter a number or string ')

if type (varA) == str or type (varB) == str:

    print "string involved"
elif varA > varB:
    print "bigger"
elif varA == varB:
    print "equal"
elif varA < varB:
    print "smaller" 

您可以使用 var.isdigit() 来检查您的字符串变量是否也是一个数字。然后您可以使用 int(var) 转换其他选项。

注意,如果您先检查两者是否都是数字,则不需要错误处理。

查看下面的代码:

 def main():
    varA = raw_input("Enter a number or string") #this is a string by default   
    varB = raw_input("Enter a number or string")

    aNegDigit = False
    bNegDigit = False
    stringFlag = False #used to flag strings (e.g. -abc)

    if(varA[0] == "-" and varA[1:].isdigit()):
        varA = -1*int(varA[1:])
        aNegDigit = True

    if(varB[0] == "-" and varB[1:].isdigit()):
        varB = -1*int(varB[1:])
        bNegDigit = True

    if (aNegDigit or bNegDigit):
        if(not(aNegDigit)):
            if(varA.isdigit()):
               varA = int(varA)
            else:
                stringFlag = True

        if (not(bNegDigit)):
            if(varB.isdigit()):
               varB = int(varB)
            else:
                stringFlag = True

        if (stringFlag == True):
            print("String Involved")

        else:
            compareVarStrs(varA, varB)

    elif(varA.isdigit() and varB.isdigit()):
        compareVarStrs(varA, varB)

    else:
        print("String Involved")

def compareVarStrs(varA, varB):
    if (int(varA) > int(varB)):
        print ("bigger")

    elif (int(varA) < int(varB)):
        print ("smaller")

    else:
        print ("equal")

main()
try:
    varA = int(varA)
    varB = int(varB)
except ValueError:
    print 'invalid input'
  1. raw_input的返回值类型为str
  2. 你想要的是检查返回的 str 对象中是否有数字
  3. 最终你要把这些 str 转换成 int 以便你可以比较,所以为什么不先尝试转换它呢:

Floam 的响应因他的 'if' 条件而无法正常工作。如果其中一个输入是数字(一个可能是字符串),它将尝试将字符与数字进行比较。即使它运行,也会导致不准确的结果。

更新我一开始写错语法了

试试这个:

varA = raw_input('Enter a number or string ')
varB = raw_input('Enter a number or string ')

if varA.isdigit() and varB.isdigit():
    varA = int(varA)
    varB = int(varB)

    if varA > varB:
        print "bigger"
    elif varA == varB:
        print "equal"
    elif varA < varB:
        print "smaller" 

else:
    print "strings involved"