вложенный в цикл не дает все выходы - PullRequest
0 голосов
/ 21 мая 2018

Я должен получить 16 выходов, где каждое из значений каждого из циклов for умножается друг на друга, но по какой-то причине я получаю только 4 выхода, где умножается только значение 4000 K.со всеми значениями D.Может кто-нибудь сказать мне, где я ошибся?

def main():
    for i in range(0,4):
        for j in range(0,4):
            if j==0:
                K=1000
            elif j==1:
                K=2000
            elif j==2:
                K=2500
            else:
                K=4000

        if i==0:
            D=2
        elif i==1:
            D=4
        elif i==2:
            D=5.5
        else:
            D=10

        print("The year with depth",D,"and K as",K,"is",K*D)

main()

Ответы [ 3 ]

0 голосов
/ 21 мая 2018

Вы должны перестроить свой код, первые объявления последними print:

def main():
    for i in range(0,4):
        if i==0:
            D=2
        elif i==1:
            D=4
        elif i==2:
            D=5.5
        else:
            D=10
        for j in range(0,4):
            if j==0:
                K=1000
            elif j==1:
                K=2000
            elif j==2:
                K=2500
            else:
                K=4000
            print("The year with depth",D,"and K as",K,"is",K*D)

Кроме того, один питонический способ сделать это будет:

for D in (2, 4, 5.5, 10):
    for K in range(1000, 5000, 1000):
        print("The year with depth",D,"and K as",K,"is",K*D)
0 голосов
/ 21 мая 2018

Порядок важен, и оператор print должен быть во внутреннем цикле for.

def main():
        for i in range(0,4):

                if i==0:
                        D=2
                elif i==1:
                        D=4
                elif i==2:
                        D=5.5
                else:
                        D=10

                for j in range(0,4):
                        if j==0:
                                K=1000
                        elif j==1:
                                K=2000
                        elif j==2:
                                K=2500
                        else:
                                K=4000
                        print("The year with depth",D,"and K as",K,"is",K*D)

main()
0 голосов
/ 21 мая 2018

Вы получаете только 4 выхода, потому что ваш print() равен за пределами второго контура.Добро пожаловать в кошмар отступов Python:)

...