Я делаю суперпростую программу, которая разделяет четные или нечетные числа из строки, указанной в командной строке. Например:Проблемы с разбором численных аргументов командной строки
$ test.py 1 1234
13
$ test.py 2 1234
24
Проблема в том, что я не могу заставить ее работать. Он печатает использование вместо ожидаемых чисел.
$ test.py 1 1234
Usage: test.py [option] [number], etc..
Кроме того, это должно напечатать использование, но вместо этого ничего не делает:
$ python2.7 test.py 1
$
Почему не программа вывода использование? len(sys.argv)
- < 2
, поэтому он должен использовать печать, правильно?
def oddtarray(num):
tlist = map(int, str(num))
tnum = [x for x in tlist if (x % 2) != 0]
return tnum
def eventarray(num):
tlist = map(int, str(num))
tnum = [x for x in tlist if (x % 2) == 0]
return tnum
def transform():
try:
odd = int(''.join(map(str, eventarray(sys.argv[2]))))
even = int(''.join(map(str, oddtarray(sys.argv[2]))))
if len(sys.argv) == 3:
if sys.argv[1] == 1:
print odd
elif sys.argv[1] == 2:
print even
else:
usage()
else:
usage()
except IndexError:
if len(sys.argv) < 2:
usage()
def usage():
print 'Usage: test.py [option] [number]'
print 'Options: \n[1] - Remove even numbers\n[2] - Remove odd numbers'
transform()
Попробуйте просто «python» без 2.7? – ApproachingDarknessFish
'transform' имеет ошибку с отступом. Является ли предложение 'else', которое работает' use' безоговорочно в паре с 'try' вместо' '' '' '' 'выражения? – chepner
Да Вы правы. Извините первый раз, много ошибок – Joshua