Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 02.04.2021
Сообщений: 7

Помогите исправить ошибку

02.04.2021, 18:59. Показов 2256. Ответов 9

Студворк — интернет-сервис помощи студентам
Добрый день, при написании кода про терминал оплаты, выдает ошибку, решить которую я всё никак не могу. Ошибка:
Traceback (most recent call last):
File "C:\Users\tarap\PycharmProjects\pythonPr oject\main.py", line 27, in <module>
if b + sum > udob:
NameError: name 'b' is not defined


import random

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
a = random.randrange(10000, 999999)  # чек
print('Вас приветсвует терминал "Феникс". Выберите услугу: 1 - Пополнить счёт телефона, 2 - Пополнить интернет, '
      '3 - Информация.')
udob = 150  # цена тарифа
t = int(input("Введите номер услуги(1, 2, 3): "))
if t == 1:
    tarif = int(input("Введите номер вашего тарифа(1, 2, 3): 1 - Удобный, 2 - Стандартный, 3 - Онлайн: "))
if tarif == 1:
    print("Тариф Удобный. Абонентская оплата: 150 рублей.")
    sum = int(input("Введите сумму пополнения(терминал принимает рубли достоинством 50, 100, 200, 500, 1000, "
                    "5000 рубялми): "))
if sum > udob:
    print("Ваша сдача:", sum - udob)
    print("Cпасибо за то, что пользуетесь Phoenix.")
    print("Ваш чек:", a)
 
elif sum < udob:
    print("Вы ввели недостаточную сумму. Вам нужно внести ещё", udob - sum, "рублей")
    b = int(input("Внесите ещё: "))
 
elif sum == udob:
    print("Cпасибо за то, что пользуетесь Phoenix.")
    print("Ваш чек:", a)
 
if b + sum > udob:
    print("Ваша сдача:", (b + sum) - udob)
    print("Cпасибо за то, что пользуетесь Phoenix.")
    print("Ваш чек:", a)
 
elif b + sum < udob:
    print("Вы ввели недостаточную сумму. Вам нужно внести ещё", udob - (sum + b), "рублей")
    sas = int(input("Внесите ещё: "))
elif b + sum == udob:
    print("Cпасибо за то, что пользуетесь Phoenix.")
    print("Ваш чек:", a)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.04.2021, 18:59
Ответы с готовыми решениями:

Помогите исправить ошибку в коде
import string n=input() b=input() m=False result = list(n) result2=list(b) if result.isdigit()==m or result2.isdigit()==m : ...

Помогите исправить ошибку GMPY2
Помогите исправить ошибку def decryptRSA(inB, key, exponent): b = '' for i in range(0, len(key) / 2): b +=...

Помогите найти и исправить ошибку
def point_linear_velocity_n(n, d, z1:list, z2:list): assert len(z2) &gt; len(z1), &quot;z1 - это зубья передней шестерни (системы), z2 - это...

9
22 / 14 / 8
Регистрация: 15.11.2020
Сообщений: 80
02.04.2021, 19:30
Лучший ответ Сообщение было отмечено axeod как решение

Решение

укажите переменную b в начале кода, и задайте ей любое значение
1
0 / 0 / 0
Регистрация: 02.04.2021
Сообщений: 7
02.04.2021, 19:33  [ТС]
Спасибо огромное, помогло, а что если принт стал дублироваться:
Вас приветсвует терминал "Феникс". Выберите услугу: 1 - Пополнить счёт телефона, 2 - Пополнить интернет, 3 - Информация.
Введите номер услуги(1, 2, 3): 1
Введите номер вашего тарифа(1, 2, 3): 1 - Удобный, 2 - Стандартный, 3 - Онлайн: 1
Тариф Удобный. Абонентская оплата: 150 рублей.
Введите сумму пополнения(терминал принимает рубли достоинством 50, 100, 200, 500, 1000, 5000 рубялми): 500
Ваша сдача: 350
Cпасибо за то, что пользуетесь Phoenix.
Ваш чек: 957233
Ваша сдача: 350
Cпасибо за то, что пользуетесь Phoenix.
Ваш чек: 957233

Process finished with exit code 0
0
Эксперт Python
8849 / 4500 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
02.04.2021, 19:38
Лучший ответ Сообщение было отмечено axeod как решение

Решение

axeod,А если и во второй раз не хватит?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
a = random.randrange(10000, 999999)  # чек
print('Вас приветсвует терминал "Феникс". Выберите услугу: 1 - Пополнить счёт телефона, 2 - Пополнить интернет, '
      '3 - Информация.')
udob = 150  # цена тарифа
t = int(input("Введите номер услуги(1, 2, 3): "))
if t == 1:
    tarif = int(input("Введите номер вашего тарифа(1, 2, 3): 1 - Удобный, 2 - Стандартный, 3 - Онлайн: "))
if tarif == 1:
    print("Тариф Удобный. Абонентская оплата: 150 рублей.")
    sum = int(input("Введите сумму пополнения(терминал принимает рубли достоинством 50, 100, 200, 500, 1000, "
                    "5000 рубялми): "))
while sum < udob:
    print("Вы ввели недостаточную сумму. Вам нужно внести ещё", udob - sum, "рублей")
    b = int(input("Внесите ещё: "))
    sum += b 
    
if sum > udob:
    print("Ваша сдача:", sum - udob)
    print("Cпасибо за то, что пользуетесь Phoenix.")
    print("Ваш чек:", a)
 
elif sum == udob:
    print("Cпасибо за то, что пользуетесь Phoenix.")
    print("Ваш чек:", a)
0
0 / 0 / 0
Регистрация: 02.04.2021
Сообщений: 7
02.04.2021, 19:46  [ТС]
Это только кусок начала кода
0
Эксперт Python
8849 / 4500 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
02.04.2021, 19:50
axeod, тем более
И плюс - попробуй в виде функций оформить...
1
0 / 0 / 0
Регистрация: 02.04.2021
Сообщений: 7
02.04.2021, 19:56  [ТС]
Gdez, как это, в виде функций, язык только начал учить поэтому я чайник ещё тот
0
22 / 14 / 8
Регистрация: 15.11.2020
Сообщений: 80
02.04.2021, 19:59
def надо юзать, пришли то, что тебе надо в функцию запихнуть
0
0 / 0 / 0
Регистрация: 02.04.2021
Сообщений: 7
02.04.2021, 20:02  [ТС]
Gdez, и можете помочь, у меня в выводе идёт дубликат спасибо, чека, и сдачи, это в зависимости от if или elif, но если там я поменяю elif на if, то не будет дальше работать, а если оставлю - будет дублироваться.

Добавлено через 1 минуту
Volodya_drv, вот весь код, который написал про первый тариф, мне нужно дубляж вывода убрать
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import random
b = 0
sas = 0
sum = 0
a = random.randrange(10000, 999999)  # чек
print('Вас приветствует терминал "Феникс". Выберите услугу: 1 - Пополнить счёт телефона, 2 - Пополнить интернет, '
      '3 - Информация.')
udob = 150  # цена тарифа
t = int(input("Введите номер услуги(1, 2, 3): "))
if t == 1:
    tarif = int(input("Введите номер вашего тарифа(1, 2, 3): 1 - Удобный, 2 - Стандартный, 3 - Онлайн: "))
if tarif == 1:
    print("Тариф Удобный. Абонентская оплата: 150 рублей.")
    sum = int(input("Введите сумму пополнения(терминал принимает рубли достоинством 50, 100, 200, 500, 1000, "
                    "5000 рублями): "))
if sum > udob:
    print("Ваша сдача:", sum - udob)
    print("Cпасибо за то, что пользуетесь Phoenix.")
    print("Ваш чек:", a)
 
elif sum < udob:
    print("Вы ввели недостаточную сумму. Вам нужно внести ещё", udob - sum, "рублей")
    b = int(input("Внесите ещё: "))
 
elif sum == udob:
    print("Cпасибо за то, что пользуетесь Phoenix.")
    print("Ваш чек:", a)
 
if b + sum > udob:
    print("Ваша сдача:", (b + sum) - udob)
    print("Cпасибо за то, что пользуетесь Phoenix.")
    print("Ваш чек:", a)
 
elif b + sum < udob:
    print("Вы ввели недостаточную сумму. Вам нужно внести ещё", udob - (sum + b), "рублей")
    sas = int(input("Внесите ещё: "))
elif b + sum == udob:
print("Cпасибо за то, что пользуетесь Phoenix.")
print("Ваш чек:", a)
if sas + b + sum == udob:
print("Cпасибо за то, что пользуетесь Phoenix.")
print("Ваш чек:", a)
elif sas + b + sum > udob:
print("Ваша сдача:", (b + sum + sas) - udob)
print("Cпасибо за то, что пользуетесь Phoenix.")
print("Ваш чек:", a)
0
Эксперт Python
8849 / 4500 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
02.04.2021, 20:42
axeod, выше написал код для этой операции
Без повторов "спасибо..." и "ваш чек..."
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.04.2021, 20:42
Помогаю со студенческими работами здесь

Как исправить ошибку: формат теста исправить нельзя, только текст программы
class AmericanDate: def __init__(self, y, m, d): self.get_year = str(y) self.get_month = str(m//10)+str(m%10) ...

помогите исправить ошибку
program vyt; uses crt,graph; const dx=40; dy=10; ex=15; m=9; n=10; var x0,y0,gd,gm,a,b:integer;

Помогите исправить ошибку!
While Not EOF(NameSh + &quot;.txt&quot;) - вот эта строка выводит ошибку &quot;Type mismatch&quot;. В других реестрах эта же программа работает нормально... А...

Помогите исправить ошибку
Всем привет!Вот возник вопрос есть программ которая считает сумму между первым и вторым отрицательным числом включительно пример 1 2 -4 6...

Помогите исправить ошибку
Условие задачи Из входного потока вводится произвольное число строк. Каждая строка представляет собой последовательность слов ,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru