Есть ли способ для цикла for не возвращаться к коду сверху, если следующий оператор if равен true? - PullRequest
0 голосов
/ 26 сентября 2019
a = 0
b = 0

for x in range (100):
    a = a + 1
    if a == 10:
        b = b + 1

print(a)
print(b)

Итог

99
1

Что я хочу

10
90

Ответы [ 3 ]

0 голосов
/ 26 сентября 2019

Добавить условную проверку.

a = 0
b = 0

for x in range (100):
    if (a % 10 != 0 or a==0):
        a = a + 1
    else:
        b = b + 1

print(a)
print(b)
0 голосов
/ 26 сентября 2019

Просто для удовольствия:

a, b = 0, 0
for x in range(100):
    add = a % 10 != 0 or a == 0
    a += add
    b += not add

Здесь используется тот факт, что bool является целым числом, хотя я не советую его, поскольку он не слишком читабелен

0 голосов
/ 26 сентября 2019

IIUC, это должно сработать:

a = 0
b = 0
for x in range (100):

    if a < 10:
        a = a + 1
    else:
        b = b + 1

Но для дальнейшего упрощения вы можете использовать оператор присваивания python, синтаксис a += 1, который увеличивает значение a на 1:

a = 0
b = 0
for x in range (100):

    if a < 10:
        a += 1
    else:
        b += 1
...