通过运行时parmer时提供不正确的结果

时间:2018-01-06 13:24:11

标签: python

我正在尝试在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
你可以帮我解决问题吗

2 个答案:

答案 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

享受; - )