Цикл for выполняется меньшее кол-во раз

Roman_Jeel

Новичок
Пользователь
Авг 27, 2023
4
0
1
1. Windows
2. Python 3.11.4

При вводе значений пользователем цикл for срабатывает по 7, 8, 9 раз. Получается какие-то итерации он "проглатывает", не могу понять почему

Python:
import random

a = 1
b = 1
c = 1
op = 0

# opPlus = 1
# opMinus = 2
# opDel = 3
# opUmn = 4

win = 0
fail = 0

userName = input("Введите имя пользователя: ")

print("- - - "*11)
print("-*-"*4, "Добро пожаловать в игру \"Cчитай как профи\","+userName+"!", "-*-"*4)
print("["+"______"*11+"]")
print("Перед вами будет стоять задача, посчитать 10 примеров правильно и как можно быстрее")
lvlHard = input(f"""На выбор дается 3 уровня сложности.
Примеры в пределах:
1. До 20 c таблицей умножения
2. От 1 до 100 без деления и умножения
3. От 1 до 100 хардкор
{userName}, выберите Ваш уровень (1, 2, 3): """)


while not lvlHard.isdigit():
    # Пока в переменной стр не число просить у него:
    lvlHard = input("Пожалуйста, введите уровень сложности, а именно 1,2 или 3: ")

if lvlHard == "1":
    for i in range(10):
        a = random.randint(1, 10)
        b = random.randint(1, 10)
        op = random.randint(1, 4)
        if op == 1:
            # +
            c = int(input(f"{a} + {b} = ?: "))
            if c == a + b:
                print("Верно! Продолжай в том же духе!")
                win += 1
            elif c != a + b:
                print("Ответ неверный:(")
                fail += 1
            else:
                print("Непредусмотренное значение")
        elif op == 2:
            # -
            while a < b:
                a = random.randint(1, 10)
                b = random.randint(1, 10)
            c = int(input(f"{a} - {b} = ?: "))
            if c == a - b:
                print("Верно! Продолжай в том же духе!")
                win += 1
            elif c != a - b:
                print("Ответ неверный:(")
                fail += 1
            else:
                print("Непредусмотренное значение")
        elif op == 3:
            # //
            while not (a % b) == 0 and a < b:
                a = random.randint(1, 10)
                b = random.randint(1, 10)
            if a % b == 0 and (a > b or a == b):
                c = int(input(f"{a} / {b} = ?: "))
                if c == a // b:
                    print("Верно! Продолжай в том же духе!")
                    win += 1
                elif c != a // b:
                    print("Ответ неверный:(")
                    fail += 1
                else:
                    print("Непредусмотренное значение")
        elif op == 4:
            # *
            c = int(input(f"{a} * {b} = ?: "))
            if c == a * b:
                print("Верно! Продолжай в том же духе!")
                win += 1
            elif c != a * b:
                print("Ответ неверный:(")
                fail += 1
            else:
                print("Непредусмотренное значение")
if fail > 0:
    zn = win / fail * 100
    zn = int(zn)
    zn = float(zn) / 100
    print(f"""
Итого:
верных ответов - {win}
неверных - {fail}
{zn}% побед""")

elif fail == 0:
    print(f"""Итого:
верных ответов - {win}
неверных - {fail}
100% побед""")
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
а сколько нужно?
 

Roman_Jeel

Новичок
Пользователь
Авг 27, 2023
4
0
1
а сколько нужно?
10 как цикле
 

Roman_Jeel

Новичок
Пользователь
Авг 27, 2023
4
0
1
10 как в цикле*
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
у вас проблема в этой части
Python:
        elif op == 3:
            # //
            while not (a % b) == 0 and a < b:
                a = random.randint(1, 10)
                b = random.randint(1, 10)
            if a % b == 0 and (a > b or a == b):
                c = int(input(f"{a} / {b} = ?: "))
                if c == a // b:
                    print("Верно! Продолжай в том же духе!")
                    win += 1
                elif c != a // b:
                    print("Ответ неверный:(")
                    fail += 1
                else:
                    print("Непредусмотренное значение")

точнее в условии if, иногда оно не истинно, и блок за if не выполняется
почему, разбираться не стал, воспользуйтесь дебагером, думаю, все поймете
 
  • Мне нравится
Реакции: Roman_Jeel

Roman_Jeel

Новичок
Пользователь
Авг 27, 2023
4
0
1
у вас проблема в этой части
Python:
        elif op == 3:
            # //
            while not (a % b) == 0 and a < b:
                a = random.randint(1, 10)
                b = random.randint(1, 10)
            if a % b == 0 and (a > b or a == b):
                c = int(input(f"{a} / {b} = ?: "))
                if c == a // b:
                    print("Верно! Продолжай в том же духе!")
                    win += 1
                elif c != a // b:
                    print("Ответ неверный:(")
                    fail += 1
                else:
                    print("Непредусмотренное значение")

точнее в условии if, иногда оно не истинно, и блок за if не выполняется
почему, разбираться не стал, воспользуйтесь дебагером, думаю, все поймете
спасибо, ты лучший =)
 

Форум IT Специалистов