Python 3.7 Входные данные не распознаются циклом - PullRequest
0 голосов
/ 17 марта 2019

скопируйте и вставьте этот код в IDE и запустите его. Выход будет: (1, 3, 4) да (1, 3, 4) [список всех комбо] Готово

Однако, если вы закомментируете оператор N = tuple и раскомментируйте оператор N = input. Затем запустите его, вам будет предложено ввести (кортеж) с 3 числами в диапазоне 1-5 в порядке возрастания. Когда вы запускаете этот файл, я думаю, вы должны получить тот же результат, но НЕТ! По какой-то причине, хотя кортеж корректен и распечатывается как таковой, он по какой-то причине не распознается в цикле и обходит его. Таким образом, оператор печати YES не печатает. вывод: (1, 3, 4) (1, 3, 4) [список всех комбо] Совершено

Так почему это так и что я могу сделать, чтобы это исправить?

из импортных комбинаций itertools

N = (1, 3, 4)  # N is tuple with 3 numbers
#  N = input('Enter (tuple)')
print(N)

combos = [numbers for numbers in combinations(range(1, 6), 3)]
for numbers in combos:
    if N == numbers:
        print('yes') 

print(N)
print(combos)
print('Done')

1 Ответ

0 голосов
/ 17 марта 2019

Похоже, ваша проблема здесь в том, что когда вы раскомментируете строку ввода, N устанавливается как строка, а не как кортеж, так как input автоматически устанавливает все, что попадает в строку. Одним из решений будет следующее:

N1 = int(input("Enter the first number")) N2 = int(input("Enter the second number")) N3 = int(input("Enter the third number")) N = (N1, N2, N3)

...