Получение ошибки типа в моей программе (новичок в python) - PullRequest
1 голос
/ 02 апреля 2020

Я пытаюсь написать программу, которая несколько раз считывает входные данные в командную строку, используя некоторое время l oop. Я хочу пропустить четные числа и печатать только нечетные числа. Входные данные всегда действительны.

Вот что я получил:

    import sys

    num = sys.argv

    while True:
      for x in num:
        if x % 2 == 0:
           continue
      else: 
        print(x)

Я получаю эту ошибку: «Ошибка типа: не все аргументы преобразованы во время форматирования строки»

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

sys.argv содержит строки, а не числа. Вы можете использовать функцию int() для преобразования строк в числа.

Но вы должны пропустить первый элемент sys.argv, поскольку он содержит имя сценария, которое вряд ли будет числом.

Нет необходимости в выражении continue. Просто переверните смысл теста и выведите его значение.

import sys

num = sys.argv[1:]

for x in num:
    if int(x) % 2 == 1:
        print(x)

Эквивалент while l oop:

i = 1
while i < len(sys.argv):
    if int(sys.argv[i]) % 2 == 1:
        print(sys.argv[i])
    i += 1
0 голосов
/ 02 апреля 2020

Вам не нужно некоторое время True, если вы используете sys.argv, а ваш else имеет неправильный отступ. import sys

num = sys.argv


for x in num:
    if int(x) % 2 != 0:
        print(x)

Или, если вы хотите, чтобы он работал непрерывно, как кажется, попробуйте:

while True:
    x = input("Number: ")
    if int(x) % 2 != 0:
        print(x)
...