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

Ошибка NameError: name 'result_fine' is not defined

04.08.2023, 15:27. Показов 2139. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
начал изучать питон с бесплатного курса от skillbox, есть задача, сделать систему расчета штрафов для германии, я сделал, все работает, но есть одно число, которое он просто не переваривает, выдает ошибку о несуществующем выражении, ниже будет код
выдает ошибку NameError: name 'result_fine' is not defined в последней строке.
вроде работает, но при вводе 100 в car_speed выдает ошибку, помогите, пожалуйста, знатоки



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
37
38
39
40
41
42
43
44
45
46
47
48
print("Система расчёта штрафов")
 
car_speed = 
is_town = True
 
fine_for_1_to_10 = 30
fine_for_11_to_15 = 50
fine_for_16_to_20 = 70
fine_for_21_to_25 = 115
fine_for_26_to_30 = 180
fine_for_31_to_40 = 250
fine_for_41_to_50 = 400
fine_for_51_to_60 = 560
fine_for_61_to_70 = 700
fine_for_70_and_more = 800
 
town_speed = 50
country_speed = 70
 
if is_town:
  over_speed = car_speed - town_speed
else:
  over_speed = car_speed - country_speed
  
if over_speed < 0:
  result_fine = 0
  print("Скорость не превышена или превышена незначительно")
elif over_speed <= 10:
  result_fine = fine_for_1_to_10
elif over_speed <= 15:
  result_fine = fine_for_11_to_15
elif over_speed <= 20:
  result_fine = fine_for_16_to_20
elif over_speed <= 25:
  result_fine = fine_for_21_to_25
elif over_speed <= 30:
  result_fine = fine_for_26_to_30
elif over_speed <= 40:
  result_fine = fine_for_31_to_40
elif over_speed >= 41 and over_speed < 50:
  result_fine = fine_for_41_to_50
elif over_speed >= 51 and over_speed < 60:
  result_fine = fine_for_51_to_60
elif over_speed >= 61 and over_speed < 70:
  result_fine = fine_for_61_to_70
elif over_speed >= 70:
  result_fine = fine_for_70_and_more
print("Штраф: " + str(result_fine) )
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.08.2023, 15:27
Ответы с готовыми решениями:

Ошибка NameError: name 'c' is not defined
what = input ( &quot;Что делаем? (+, -, *, / ): &quot; ) a = float( input(&quot;Ведите первое число: &quot;) ) b = float( input(&quot;Ведите второе...

Ошибка NameError: name 'temperature' is not defined
Не понимаю, почему возникает данная ошибка, если я при переопределении класса указал переменные Traceback (most recent call last): ...

Ошибка NameError: name 'road' is not defined
Читаю сейчас книгу - К.Ю. Поляков, Е.А. Еремин там описан код class TRoad: def _init_ ( self, legth0, width0 ): #...

9
Заблокирован
04.08.2023, 15:36
Цитата Сообщение от emohornyboychik Посмотреть сообщение
elif over_speed >= 41 and over_speed < 50:
result_fine = fine_for_41_to_50
elif over_speed >= 51 and over_speed < 60:
over_speed == 50 где?
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
04.08.2023, 15:39
Цитата Сообщение от emohornyboychik Посмотреть сообщение
elif over_speed >= 70:
else:
0
0 / 0 / 0
Регистрация: 04.08.2023
Сообщений: 5
04.08.2023, 15:59  [ТС]
в плане? вчера начал с этим всем пытаться разбираться, не особо понимаю, о чем вы..
0
9 / 6 / 3
Регистрация: 01.08.2023
Сообщений: 14
04.08.2023, 16:04
В вашем коде есть ошибка: если ввести скорость 100, то расчет даст 50, а число 50 не закрыто условиями (нет ни одного условия, в котором с числом 50 будет True). Поскольку вы не указали else, после получения False во всех проверках, переменная result_fine осталась без значения, и её вызов привел к ошибке
0
0 / 0 / 0
Регистрация: 04.08.2023
Сообщений: 5
04.08.2023, 16:13  [ТС]
что мне нужно сделать, чтобы исправить это?
0
9 / 6 / 3
Регистрация: 01.08.2023
Сообщений: 14
04.08.2023, 16:17
Цитата Сообщение от emohornyboychik Посмотреть сообщение
что мне нужно сделать, чтобы исправить это?
Вам нужно указать условия после elif такие, чтобы они затрагивали все числа. Посмотрим на ваш код, на два условия:
Python
1
2
3
4
elif over_speed >= 41 and over_speed < 50:
    result_fine = fine_for_41_to_50
elif over_speed >= 51 and over_speed < 60:
    result_fine = fine_for_51_to_60
В первом условии, мы проверяем чтобы over_speed был строго меньше 50.
Во втором условии, мы проверяем чтобы over_speed был больше либо равен 51.
Выполнится ли условие 1 при скорости 50? Выполнится ли условие 2 при скорости 50? На обоих случаях ответ нет.

Замечу, что не только эти два условия нужно изменить. Ошибка будет возникать и при скорости 110, 120, и тд
0
0 / 0 / 0
Регистрация: 04.08.2023
Сообщений: 5
04.08.2023, 17:13  [ТС]
изменил код, но не помогло..

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
37
38
39
40
41
42
43
44
45
46
47
48
print("Система расчёта штрафов")
 
car_speed = 111
is_town = True
 
fine_for_1_to_10 = 30
fine_for_11_to_15 = 50
fine_for_16_to_20 = 70
fine_for_21_to_25 = 115
fine_for_26_to_30 = 180
fine_for_31_to_40 = 250
fine_for_41_to_50 = 400
fine_for_51_to_60 = 560
fine_for_61_to_70 = 700
fine_for_70_and_more = 800
 
town_speed = 50
country_speed = 70
 
if is_town:
    over_speed = car_speed - town_speed
else:
    over_speed = car_speed - country_speed
 
if over_speed < 0:
    result_fine = 0
    print("Скорость не превышена или превышена незначительно")
elif over_speed <= 1 and over_speed < 10:
    result_fine = fine_for_1_to_10
elif over_speed <= 11 and over_speed < 15:
    result_fine = fine_for_11_to_15
elif over_speed <= 16 and over_speed < 20:
    result_fine = fine_for_16_to_20
elif over_speed <= 21 and over_speed < 25:
    result_fine = fine_for_21_to_25
elif over_speed <= 26 and over_speed < 30:
    result_fine = fine_for_26_to_30
elif over_speed <= 31 and over_speed < 40:
    result_fine = fine_for_31_to_40
elif over_speed >= 41 and over_speed < 50:
    result_fine = fine_for_41_to_50
elif over_speed >= 51 and over_speed < 60:
    result_fine = fine_for_51_to_60
elif over_speed >= 61 and over_speed < 70:
    result_fine = fine_for_61_to_70
elif over_speed >= 70:
    result_fine = fine_for_70_and_more
print("Штраф: " + str(result_fine))
0
9 / 6 / 3
Регистрация: 01.08.2023
Сообщений: 14
04.08.2023, 19:28
Лучший ответ Сообщение было отмечено emohornyboychik как решение

Решение

Не помогло, потому что вы не решили её источник, и сделали новые проблемы.

В этом куске кода условие выполняется только для чисел меньше 12
Python
1
2
elif over_speed <= 11 and over_speed < 15:
    result_fine = fine_for_11_to_15
Скорее всего, это опечатка и вы хотели написать
Python
1
2
elif over_speed >= 11 and over_speed < 15:
    result_fine = fine_for_11_to_15
Что лучше заменить на более читаемую конструкцию (питон поддерживает двойные сравнения)
Python
1
2
elif 11 <= over_speed < 15:
    result_fine = fine_for_11_to_15
А корень вашей проблемы кроется в коде
Python
1
2
3
4
5
6
7
8
9
10
elif over_speed >= 41 and over_speed < 50:
    result_fine = fine_for_41_to_50
elif over_speed >= 51 and over_speed < 60:
    result_fine = fine_for_51_to_60
 
# более читаемая запись
elif 41 <= over_speed < 50:
    result_fine = fine_for_41_to_50
elif 51 <= over_speed < 60:
    result_fine = fine_for_51_to_60
Как я писал ранее, число 50 не попадает под первое условие (потому что там ищутся числа строго меньше 50), и не попадает под второе условие, поскольку там ищутся числа от 51 и выше). Соответственно, правим условие
Python
1
2
3
4
elif 41 <= over_speed < 50:
    result_fine = fine_for_41_to_50
elif 50 <= over_speed < 60:
    result_fine = fine_for_51_to_60
По аналогии, нужно будет изменить такую же ошибку и для других условий, поскольку скорости 110, 120, 130 все также будут вызывать ошибку
1
0 / 0 / 0
Регистрация: 04.08.2023
Сообщений: 5
05.08.2023, 18:03  [ТС]
посидел, и понял
но, получается, что мне также делать с файлом штрафов германии? ибо там идут нечетные числа

Добавлено через 6 минут
спасибо большое! до гуманитария наконец дошло))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.08.2023, 18:03
Помогаю со студенческими работами здесь

Ошибка NameError: name 'a' is not defined
Здравствуйте, я новичок в PYTHON, ошибка, видаёт, внизу. Помогите пожалуйста или подскажите как и что сделать. Буду очень благодарен,...

Ошибка в коде NameError: name 'b2' is not defined
Помогите с ошибкой в коде NameError: name 'b2' is not defined код: from tkinter import * def zachem(): ...

Ошибка в программе NameError: name 'k' is not defined
Ошибка в программе на языке Python! # -*- coding: cp1251 -*- print(&quot;Добро пожаловать в калькулятор вкладов v1.3&quot;) start =...

Ошибка: NameError: name 'user_unput_start' is not defined
Добрый день. Только начал изучать Python. С другими языками опыт есть. Но все не на высоком уровне... Вот сам код: def start_func(): ...

Не работает код. Ошибка NameError: global name 'Pizza' is not defined. Что я не правильно делаю?
from livewires import games games.init(screen_width = 500, screen_height =380, fps = 20) class Pizza(games.Sprite): def...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru