我正在尝试在python中编写if elif条件来比较输入值并提供结果集,但它总是转到else条件以获得有效值。
import sys
firstarg=sys.argv[1].strip()
print firstarg
if firstarg == 1:
print 'A'
elif firstarg == 2:
print 'B'
elif firstarg == 3:
print 'C'
elif firstarg == 4:
print 'D'
else:
print 'End'
输出: -
#>sample.py 4
4
End
#>sample.py 3
3
End
#>sample.py 2
2
End
你可以帮我解决问题吗
答案 0 :(得分:1)
如果您要比较不同的数据类型,那么您将面临这些类型的问题。
按firstarg
检查print type(firstarg)
的数据类型。在这种情况下,它将是string
,您将它与整数进行比较。
因此,在比较之前,首先将类型转换为int(firstarg),或者将1,2,3,4作为if firstarg == '1'
之类的字符串进行比较。
答案 1 :(得分:0)
说实话......代码抛出了一个追溯错误,没有人在评论中提到这一点。它是一个“超出范围的列表索引......”。
这是有用的,有助于理解代码的内容(也可参见内联注释)。
import sys
#firstarg=sys.argv[0].strip()
filepath = 'D:\\Test\\bingo1.py' # set an example filepath with random filename.
firstarg=filepath.split('.') # split filepath -> 2 list items: 'filename', 'extension'].
print firstarg, type(firstarg)
firstarg = firstarg[0][-1] # see if the last character in the string is an integer
print firstarg, type(firstarg)
firstarg = int(firstarg) # convert string to integer.
if firstarg == 1:
print 'A'
elif firstarg == 2:
print 'B'
elif firstarg == 3:
print 'C'
elif firstarg == 4:
print 'D'
else:
print 'End'
输出:
['D:\\Test\bingo1', 'py'] <type 'list'>
1 <type 'str'>
A
享受; - )