Нет вывода при использовании вложенных циклов внутри операторов if - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь распечатать серию шаблонов, основанных на пользовательском вводе.Однако, когда я добавляю к нему оператор if или while, я не получаю вывод, даже если выбрал правильное число.Шаблоны работают, если я не добавляю петли к нему.Я новичок в Python и не понимаю, почему он ничего не печатает.

num_draw = input("Please enter the number of the design you would like[1-6] or -1 to quit: ")

#while num_draw != -1:
if num_draw == 1:

    for i in range(0, 5):
        for j in range(0, i+1):
            print("* ",end="")
        print()
elif num_draw == 2:
#2
    size = 5
    isize = size - 2
    print ('*' * size)
    for i in range(isize):
        print ('*' + ' ' * isize + '*')
    print ('*' * size)

elif num_draw == 3:

    for i in range(5):
        for j in range(5):
            print(" *"[(j + i + 1)%2], end=' ')
        print()
elif num_draw == 4:

    for i in range(0, 5):
        for j in range(0, i+1):
            print("* ",end="")
        print()


elif num_draw == 5:
    for i in range(0, 5):
        for j in range(5, i, -1):
            print("@ ", end="")
        print()


elif num_draw == 6:
    k = 8
    for i in range(0, 5):
        for j in range(0, k):
            print(end=" ")
        k = k - 2
        for j in range(0, i+1):
            print("* ", end="")
        print()

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Как уже упоминалось, ваш input должен быть int для правильного сравнения.Что касается вашего цикла while, то while num_draw != -1: является правильным, но вам нужно переместить приглашение input в цикле, чтобы пользователь мог выбрать опцию.установка num_draw = 'x' предназначена только для создания условия для запуска цикла

num_draw = 'x'
while num_draw != -1:
    num_draw = int(input("Please enter the number of the design you would like[1-6] or -1 to quit: "))
0 голосов
/ 04 октября 2018

Вы были почти правы.Проблема заключалась в том, что ввод с клавиатуры всегда имеет тип str (по умолчанию строка) и вы сравниваете его с числами типа int (целое число).Напримересли вы введете 1, то num_draw='1', и поэтому вы проверяете if '1' == 1:, что составляет False.Точно так же ни один из ваших if или elif не является True, потому что вы сравниваете тип str с типом int.

Чтобы ваш код работал, преобразуйте тип ввода в int следующим образом:

num_draw = int(input("Please enter the number of the design you would like[1-6] or -1 to quit: "))

Вывод

Please enter the number of the design you would like[1-6] or -1 to quit: 

1
* 
* * 
* * * 
* * * * 
* * * * * 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...