Вам необходимо предоставить целочисленный аргумент.
Сравните:
$ python /tmp/111.py
Traceback (most recent call last):
File "/tmp/111.py", line 33, in <module>
main()
File "/tmp/111.py", line 24, in main
w0 = gen_constants (int(sys.argv [1]))
IndexError: list index out of range
$ python /tmp/111.py 1
False
True
False
True
$ python /tmp/111.py 2
False
False
False
True
False
True
True
True
$ python /tmp/111.py w
Traceback (most recent call last):
File "/tmp/111.py", line 33, in <module>
main()
File "/tmp/111.py", line 24, in main
w0 = gen_constants (int(sys.argv [1]))
ValueError: invalid literal for int() with base 10: 'w'
Или обновите свой код, чтобы справиться с любым вводом или с его отсутствием.
ОБНОВЛЕНИЕ:
def main():
try:
argument = sys.argv[1]
except IndexError:
print 'This script needs one argument to run.'
sys.exit(1)
try:
argument = int(argument)
except ValueError:
print 'Provided argument must be an integer.'
sys.exit(1)
w0 = gen_constants (argument)
for i in w0:
print big_and (i)
for i in w0:
print big_or (i)
Что дает вам:
$ python /tmp/111.py
This script needs one argument to run.
$ python /tmp/111.py 2.0
Provided argument must be an integer.
$ python /tmp/111.py w
Provided argument must be an integer.
$ python /tmp/111.py 1
False
True
False
True