我试图在Python2.7中获取一个输入,并允许它区分字符串和整数
我是新来的,尝试了搜索功能,但找不到合适的方法,如果有任何可能的支持,我将不胜感激 我想修改此代码以允许用户输入数字或单词。如果变量a和b是数字,代码将测试int并比较数字的大小,但是如果选择了一个单词,它将测试所涉及的字符串和打印字符串。我试图使代码保持相当简单我试图在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
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"