我试图在python 2.7中输入一个输入,并允许它区分字符串和整数

时间:2016-02-18 02:00:41

标签: python input user-input

我是新手并尝试了搜索功能,但找不到合适的方法,并希望得到任何支持。

我想修改此代码以允许用户输入数字或单词。如果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" 

3 个答案:

答案 0 :(得分:0)

您可以使用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()

答案 1 :(得分:0)

try:
    varA = int(varA)
    varB = int(varB)
except ValueError:
    print 'invalid input'
  1. raw_input的返回值属于str
  2. 类型
  3. 你想要的是检查返回的str对象中是否有号码
  4. 最终您要将这些str转换为int以便您可以进行比较,那么为什么不继续尝试先转换它:

答案 2 :(得分:-1)

由于他的“如果&#39;而弗洛姆的反应不会起作用。条件。如果其中一个输入是数字(一个可能是一个字符串),它将尝试将字符与数字进行比较。如果它甚至运行,那将导致不准确的结果。

更新我最初用错误的语法

写了它

试试这个:

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"