Пока цикл заканчивается рано? - PullRequest
0 голосов
/ 04 сентября 2018
first_name = input("Please enter your first name: ").capitalize()
start_inner = int(input("Hi {}, please enter the start value for the inner loop: ".format(first_name)))
end_inner = int(input("Please enter the end value for the inner loop: "))
start_outer = int(input("Please enter the start value for the outer loop: "))
end_outer = int(input("Please enter the end value for the outer loop: "))

while start_outer <= end_outer:
        while start_inner <= end_inner:
                print("{:>1} {:>1}".format(start_outer,start_inner))
                start_inner = start_inner +1
        start_outer = start_outer +1
print("After the loop")

Если бы я должен был ввести 1 (start_inner), 4 (end_inner), 1 (start_outer), 3 (end_outer)

Я должен получить

1 1
1 2
1 3
1 3
2 1
2 2
2 3
2 4
3 1
3 2
3 3
3 4

Вместо этого я получаю

1 1
1 2
1 3
1 4

Я задал очень похожий вопрос о циклах, и добавление +1 к моему отпечатку, похоже, помогло, но не повезло с циклами while.

спасибо

Ответы [ 3 ]

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

Вам нужно сбросить стартовый внутренний один раз после внутреннего цикла

start_inner = 1
end_inner = 4
start_outer = 1
end_outer = 3    
while start_outer <= end_outer:
            while start_inner <= end_inner:
                    print("{:>1} {:>1}".format(start_outer,start_inner))
                    start_inner = start_inner +1
            start_inner = 1        
            start_outer = start_outer +1
    print("After the loop")
0 голосов
/ 04 сентября 2018

OR

...
print('\n'.join("{:>1} {:>1}".format(i,j) for i in range(start_outer,end_outer+1) for j in range(start_inner,end_inner+1)))
print("After the loop")
0 голосов
/ 04 сентября 2018

Ваш start_inner не возвращается к исходному значению. Попробуйте использовать промежуточную переменную для итерации или лучше, но используйте цикл for.

start_inner = 1
end_inner = 4
start_outer = 1
end_outer = 3

while start_outer <= end_outer:
    iter_start_inner = start_inner
    while iter_start_inner <= end_inner:
            print("{:>1} {:>1}".format(start_outer,iter_start_inner))
            iter_start_inner += 1
    start_outer = start_outer +1
print("After the loop")

for альтернатива петли

for i in range(start_outer,end_outer+1):
    for j in range(start_inner,end_inner+1):
            print("{:>1} {:>1}".format(i,j))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...