我正在尝试在 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'
raw_input
的返回值类型为str
- 你想要的是检查返回的
str
对象中是否有数字
- 最终你要把这些
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"
我是新手,尝试过搜索功能,但找不到合适的方法,如果能提供任何支持,我将不胜感激。
我想修改此代码以允许用户输入数字或单词。如果 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'
raw_input
的返回值类型为str
- 你想要的是检查返回的
str
对象中是否有数字 - 最终你要把这些
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"