Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/30: Рейтинг темы: голосов - 30, средняя оценка - 4.57
20 / 6 / 1
Регистрация: 29.08.2018
Сообщений: 107

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

21.02.2019, 11:22. Показов 6184. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Читаю сейчас книгу - К.Ю. Поляков, Е.А. Еремин
там описан код
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
class TRoad:
       def _init_ ( self,  legth0, width0 ):    # конструктор
        if  length0 > 0:
               self.lenght = lenght0
        else:
               self.lenght = 0
        if  with0  > 0:
                self.width = width0
        else:
            self.widh = 0
 
class TCar:
    def _init_ ( self, road0, p0, v0 ):  # конструтор
        self.road = road0
        self.P = p0
        self.V = v0
        self.X = 0
 
def move ( self ):    # движение машины
    self.X += self.V
    if self.X  > self.road.lenght:
        self.X = 0
 
N = 3
cars = [ ]
for i in range (N):
    cars.append ( TCar (road,  i+1, 2*(i+1)) )
    
for i  in rang (100):   #  100 шагов
     for i in rang (N):    #  для каждой машины
            cars [ i ] . move()
print (  " После 100 шагов: " )
for i in range (N):
      print ( cars [ i ] . X )
Что не правильно? и Если можно подробно объяснить.
Если я правильно понял. Проблема в том что программа class не видит.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.02.2019, 11:22
Ответы с готовыми решениями:

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

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

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

5
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
21.02.2019, 14:50
Лучший ответ Сообщение было отмечено mik-a-el как решение

Решение

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
class TRoad:
    def __init__(self, lenght0, width0):
        self.lenght = max(0, lenght0)
        self.width = max(0, width0)
 
class TCar:
    def __init__(self, road0, p0, v0):
        self.road = road0
        self.P = p0
        self.V = v0
        self.X = 0
 
    def move(self):
        self.X += self.V
        if self.X > self.road.lenght:
            self.X = 0
 
road = TRoad(100, 2)
 
N = 3
cars = []
for i in range(N):
    cars.append(TCar(road,  i+1, 2*(i+1)))
 
for _ in range(100):
    for car in cars:
        car.move()
 
print("После 100 шагов:")
for car in cars:
      print( car.X)
1
20 / 6 / 1
Регистрация: 29.08.2018
Сообщений: 107
21.02.2019, 20:03  [ТС]
Спасибо за ответРыжий Лис . Не могли бы вы объяснить:
1) class TRoad почему вы убрали - if и else
2) я понял что оператор "__init__" был не верно записан.
3) вы добавили - road = TRoad(100, 2). Блин видимо просмотрел в книги:
В этом конструкторе проверяется правильность переданных параметров, чтобы по ошибке длина и ширина дороги не оказались отрицательными. Теперь создавать объект будет проще:road=TRoad( 60, 3 ) Длина этой дороги –60 единиц, она содержит 3 полосы.
4) car был не правильно прописан.
5) почему в 25 стооке после for _
в книге написано:
for k in range(100): # 100 шагов
for i in range(N): # для каждоймашины
cars[i].move()
Я просто и 'k' провал и 'i' не работало.
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
22.02.2019, 08:10
Цитата Сообщение от Xrom123 Посмотреть сообщение
class TRoad почему вы убрали - if и else
т.к. ваше условие это фактически сравнение двух элементов, из которых переменной lenght присваивается наибольшее.
Цитата Сообщение от Xrom123 Посмотреть сообщение
почему в 25 стооке после for _
т.к. переменная цикла нигде не используется.
Python
1
2
3
4
for i in range(10):
    print(i) # i используется
for i in range(10):
    print('lol') # i не используется
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
23.02.2019, 06:36
1) просто переписал попроще. Поведение не изменилось.
2) Ага. И ещё имя функции range() и других.
3) Угу, поэтому интерпретатор и ругался на несуществующую переменную: NameError: name 'road' is not defined
4) Выговорите про метод move()? Ага, табуляция съехала.
5) вы в обоих циклах написали i. Можно писать любые имена, хоть i и j, хоть другие.
1
20 / 6 / 1
Регистрация: 29.08.2018
Сообщений: 107
24.02.2019, 10:16  [ТС]
Рыжий Лис спасибо за ответ.
Еще вопрос в задание нужно вставить в

class TCar: Графическое дополнение что бы был не только вывод информации. но и визуализация.
Все перепробовал не получается хоть тресни.
только если через - import turtle*
а в конце программы пишешь
t.forward(N)
То получается 1 прямая.
Но это же не правильно.
Не подскажите как нужно сделать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.02.2019, 10:16
Помогаю со студенческими работами здесь

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

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

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

Не работает код. Ошибка 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...

Ошибка при создании бота Вконтакте " NameError: name 'vk' is not defined "
Хочу научиться создавать бота в группе ВК, но не могу сдвинуться с места. В интернете ничего не нашел. Выдаёт ошибку " NameError: name...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru