Форум программистов, компьютерный форум, киберфорум
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. Показов 2216. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru