我试图在Python2.7中获取一个输入,并允许它区分字符串和整数

我试图在Python2.7中获取一个输入,并允许它区分字符串和整数,python,input,user-input,Python,Input,User Input,我是新来的,尝试了搜索功能,但找不到合适的方法,如果有任何可能的支持,我将不胜感激 我想修改此代码以允许用户输入数字或单词。如果变量a和b是数字,代码将测试int并比较数字的大小,但是如果选择了一个单词,它将测试所涉及的字符串和打印字符串。我试图使代码保持相当简单 varA = raw_input('Enter a number or string ') varB = raw_input('Enter a number or string ') if type (varA) == str o

我是新来的,尝试了搜索功能,但找不到合适的方法,如果有任何可能的支持,我将不胜感激

我想修改此代码以允许用户输入数字或单词。如果变量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" 
varA=raw\u输入('输入数字或字符串')
varB=原始输入('输入数字或字符串')
如果类型(varA)=str或类型(varB)=str:
打印“涉及字符串”
elif varA>varB:
打印“更大”
elif varA==varB:
打印“相等”
elif varA
您可以使用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()
def main():
varA=raw_input(“输入数字或字符串”)#默认情况下这是一个字符串
varB=原始输入(“输入数字或字符串”)
aNegDigit=False
bNegDigit=False
stringFlag=False#用于标记字符串(例如-abc)
如果(varA[0]==“-”和varA[1:].isdigit()):
varA=-1*int(varA[1:]
aNegDigit=True
如果(varB[0]==“-”和varB[1:].isdigit()):
varB=-1*int(varB[1:]
bNegDigit=True
如果(A数字或B数字):
如果(不是(aNegDigit)):
如果(varA.isdigit()):
varA=int(varA)
其他:
stringFlag=True
如果(不是(bNegDigit)):
if(varB.isdigit()):
varB=int(varB)
其他:
stringFlag=True
如果(stringFlag==True):
打印(“涉及字符串”)
其他:
比较法(varA,varB)
elif(varA.isdigit()和varB.isdigit()):
比较法(varA,varB)
其他:
打印(“涉及字符串”)
def比较器VARRSTRS(varA,varB):
如果(int(varA)>int(varB)):
打印(“较大”)
elif(int(varA)
  • raw_input
    的返回值的类型为
    str
  • 您需要检查返回的
    str
    对象中是否有数字
  • 最终,您要将这些
    str
    s转换为
    int
    s,以便进行比较,那么为什么不先尝试转换它呢:

  • 弗洛姆的反应不起作用,因为他的“如果”状态。如果其中一个输入是数字(一个可以是字符串),它将尝试将字符与数字进行比较。这将导致不准确的结果,如果它甚至运行

    更新我最初是用错误的语法写的

    试试这个:

    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"
    
    varA=raw\u输入('输入数字或字符串')
    varB=原始输入('输入数字或字符串')
    如果varA.isdigit()和varB.isdigit():
    varA=int(varA)
    varB=int(varB)
    如果varA>varB:
    打印“更大”
    elif varA==varB:
    打印“相等”
    elif varA
    请参见
    varA
    varB
    始终是字符串,因为这是
    raw\u input()
    返回的内容。如果要将一个或另一个强制转换为整数,请使用
    int()
    。注意
    “1”
    转换为
    int
    没有问题,但是
    。isdigit()
    返回
    False
    。这是Python的问题。我甚至不确定您编写的代码在任何语言中是否有效,但它肯定不是Python。谢谢,除了两个不同的负数外,这适用于大多数示例。如果我输入varA=-1和varB=-5,它会打印更小的而不是更大的。有没有办法让它将负数准确地转换为整数?@neoraiden-更改初始if语句
    if not varA.isalpha()和not varB.isalpha():
    如果将负号解释为字符,我遇到了一个问题,这使得
    isalpha()
    方法返回一个false。。。使if语句认为变量是字符串。谢谢,除了两个不相同的负数外,这适用于大多数示例。如果我输入varA=-1和varB=-5,它会打印更小的而不是更大的。有没有办法把负数准确地转换成整数?@neoraiden肯定有人把我的评论都删掉了。但是,此问题现在已解决:)。享受。
    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"