我是新手并尝试了搜索功能,但找不到合适的方法,并希望得到任何支持。
我想修改此代码以允许用户输入数字或单词。如果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"
答案 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'
raw_input
的返回值属于str
str
对象中是否有号码str
转换为int
以便您可以进行比较,那么为什么不继续尝试先转换它:答案 2 :(得分:-1)
更新我最初用错误的语法
写了它试试这个:
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"