Что не так с кодом?if num1 != rnd1: NameError: name 'num1' is not defined

Sket

Новичок
Пользователь
Ноя 6, 2023
3
0
1
Python:
import random
import sys


name = input("Как вас зовут:")
list = ['автомобиль','мотомобиль','самолет','мотолёт']
rndlist = random.choice(list)
print("1)От 0 до 5 - Easy\n2)От 0 до 10 - Normal\n3)От 0 до 20 - Hard")
reg = int(input("Выберите режим игры:"))
if reg != 1 and reg != 2 and reg != 3:
    print("Выберите 1, 2 или 3")
    while True:
        print("1)От 0 до 5 - Easy\n2)От 0 до 10 - Normal\n3)От 0 до 20 - Hard")
        reg = int(input("Выберите режим игры:"))
        if reg == 1 or reg == 2 or reg == 3:
            break
if reg == 1:
    print("Выбран режим Easy")
    rnd1 = random.randint(0, 1)
    num1 = int(input("Введите ваше число:"))
    if num1 > 5 or num1 < 0:
        print("Выберите число от 0 до 5!")
        while True:
            num1 = int(input("Введите ваше число:"))
            if num1 < 5 or num1 > 0:
                break
            else:
                print("Выберите число от 0 до 5!")

if num1 != rnd1:
    print("Простите, но вы проиграли,попробуйте еще раз")
    while True:
        num1 = int(input("Введите ваше число:"))
        if num1 == rnd1:
            break
        else:
            print("Простите, но вы проиграли,попробуйте еще раз")
if num1 == rnd1:
    print(f"{name},поздравляю!Вы выиграли {rndlist}")
    print("Чтобы получить приз, оплатите его...")
    print("1)Да\n2)Нет")
    shop1 = int(input("Будете оплачивать?"))
    if shop1 != 1 and shop1 != 2:
        print("Выберите 1 или 2!")
        while True:
            print("1)Да\n2)Нет")
            shop1 = int(input("Будете оплачивать?:"))
            if shop1 == 1 or shop1 == 2:
                break
            else:
                print("Выберите 1 или 2!")
if shop1 == 1:
    print("Yeah")
if shop1 == 2:
    print("Bad!")
sys.exit()
                  
if reg == 2:
    print("Выбран режим игры Normal")
    rnd2 = random.randint(0, 10)
    num2 = int(input("Введите ваше число:"))
    if num2 > 10 and num2 < 0:
        print("Введите число от 0 до 10!")
        while True:
            num2 = int(input("Введите ваше число:"))
            if num2 < 10 or num2 > 0:
                break
            else:
                print("Введите число от 0 до 10!")
if num2 != rnd2:
    print("Простите, но вы проиграли,попробуйте еще раз")
    while True:
        num2 = int(input("Введите ваше число:"))
        if num2 == rnd2:
            break
        else:
            print("Простите, но вы проиграли,попробуйте еще раз")

if num2 == rnd2:
    print(f"{name}!Поздравляю, вы выиграли {rndlist}")
    print("Чтобы забрать приз,оплатите его...")
    print("1)Да\n2)Нет")
    shop2 = int(input("Будете оплачивать?:"))
    if shop2 != 1 and shop2 != 2:
        print("Выберите 1 или 2!")
        while True:
            print("1)Да\n2)Нет")
            shop2 = int(input("Будете оплачивать?:"))
            if shop2 == 1 or shop1 == 2:
                break
            else:
                print("Выберите 1 или 2!")
if shop2 == 1:
    print("Yeah:)")
if shop2 == 2:
    print("Bad!")
sys.exit()

if reg == 3:
    print("Выбран режим игры Hard")
    rnd3 = random.randint(0, 20)
    num3 = int(input("Введите ваше число:"))
    if num3 > 20 and num3 < 0:
        print("Введите число от 0 до 20!")
        while True:
            num3 = int(input("Введите ваше число:"))
            if num3 < 20 or num3 > 0:
                break
            else:
                print("Введите число от 0 до 20!")
if num3 != rnd3:
    print("Простите, но вы проиграли.Попробуйте еще раз")
    while True:
        num3 = int(input("Введите ваше число:"))
        if num3 == rnd3:
            break
    else:
        print("Простите, но вы проиграли.Попробуйте еще раз")
if num3 == rnd3:
    print(f"{name},поздровляю!Вы выиграли {rndlist}")
    print("Чтобы забрать приз, оплатите его...")
    print("1)Да\n2)Нет")
    shop3 = int(input("Будете оплачивать:"))
    if shop3 != 1 and shop3 != 2:
        print("Выберите 1 или 2!")
        while True:
            print("1)Да\n2)Нет")
            shop3 = int(input("Будете оплачивать:"))
            if shop3 == 1 or shop3 == 2:
                break
            else:
                print("Выберите 1 или 2!")
if shop3 == 1:
    print("Yeah")
if shop3 == 2:
    print("Bad!")
sys.exit()



Traceback (most recent call last):
  File "D:\py.py", line 30, in <module>
    if num1 != rnd1:
NameError: name 'num1' is not defined
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
289
76
28
Вот выбрал ты режим 2 или 3, а по коду у тебя проверки идут для if num1 != rnd1: которые ты не определил. Отсюда и ошибка
Проще переписать код, чем эту простыню

Python:
import random

def func(p):
    rnd_num = random.randint(0, p)
    while True:
        if (user_num := int(input("Введите ваше число: "))) not in range(p + 1):
            print(f"Выберите число от 0 до {p}!")
            continue

        if user_num == rnd_num:
            print(f"{name}, поздравляю! Вы выиграли {rndlist}. Чтобы получить приз, оплатите его...")

            while (shop := input("Будете оплачивать? (1 - Да, 2 - Нет) ")) not in "12":
                print("Выберите 1 или 2!")

            print("Yeah" if shop == "1" else "Bad!")
            break
        else:
            print("Простите, но вы проиграли, попробуйте еще раз")


name = input("Как вас зовут: ")
rndlist = random.choice(['автомобиль', 'мотомобиль', 'самолет', 'мотолёт'])
print("1) От 0 до 5 - Easy\n"
      "2) От 0 до 10 - Normal\n"
      "3) От 0 до 20 - Hard")

while (mode := input("Выберите режим игры: ")) not in "123":
    print("Выберите 1, 2 или 3")

if mode == "1":
    print("Выбран режим Easy")
    func(5)
elif mode == "2":
    print("Выбран режим Normal")
    func(10)
else:
    print("Выбран режим Hard")
    func(20)
 
Последнее редактирование:

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