我创建了一个在城市周围旅行的班级persona
(人)。有一个列表属性lista_ciudades_visitadas
,用于存储访问过的城市列表。方法viajar
(旅行)应使用self.lista_ciudades_visitadas.append(ciudad_a_anadir)
添加访问过的城市。
以下是代码:
class Persona:
def __init__(self,nombre,edad,vehiculo):
self.nombre = nombre
self.edad = edad
self.cuenta_horas = 0
self.lista_ciudades_visitadas = []
self.vehiculo = vehiculo
def viajar(self,ciudad,km_a_viajar):
if self.vehiculo.km_recorridos + km_a_viajar < self.vehiculo.km_max:
vehiculo.km_recorridos = vehiculo.km_recorridos + km_a_viajar
tiempo_de_viaje = km_a_viajar / self.vehiculo.vel_prom
self.cuenta_horas = self.cuenta_horas + tiempo_de_viaje
ciudad_a_anadir=str(ciudad)
self.lista_ciudades_visitadas.append(ciudad_a_anadir)
print('La persona ',format(self.nombre) + 'llegó a', format(self.lista_ciudades_visitadas[-1]) + 'en {}',format(tiempo_de_viaje) + 'horas, y ahora su auto es de color {}',format(ciudad.color))
else:
tiempo_de_viaje = (self.vehiculo.km_max - km_a_viajar) / self.vehiculo.vel_prom
self.cuenta_horas = self.cuenta_horas + tiempo_de_viaje
print('La persona ',format(self.nombre) + 'no llegó a ', format(self.lista_ciudades_visitadas[-1]) + ',se quedó en panne a las {}',format(tiempo_de_viaje))
class Auto:
def __init__(self):
self.color = 'Blanco'
self.vel_prom = 80
self.km_recorridos = 0
self.km_max = 1500
self.num_ciudades_visitadas = 0
self.estado = 'Funcionando'
self._eficiencia = 0
def recorrer(self,km_a_recorrer):
if self.km_recorridos + km_a_recorrer < self.km_max:
self.km_recorridos = self.km_recorridos + km_a_recorrer
tiempo = km_a_recorrer / self.vel_prom
print ('El vehículo demoró {} horas '.format(tiempo))
else:
km_a_anadir = 1500 - self.km_recorridos
self.km_recorridos = 1500
self.estado = 'En Panne'
class Ciudad:
def __init__(self,nombre,color):
self.nombre = nombre
self.color = color
self.num_veh_pintados = 0
def pintar(self,Auto):
Auto.color = self.color
Auto.num_ciudades_visitadas = Auto.num_ciudades_visitadas + 1
self.num_veh_pintados = self.num_veh_pintados + 1
# Creamos las ciudades
roma = Ciudad("Roma", "Verde")
santiago = Ciudad("Santiago", "Rojo")
lima = Ciudad("Lima", "Azul")
valparaiso = Ciudad("Valparaso", "Celeste")
# Creamos un vehculo medio usado
vehiculo = Auto()
tiempo_de_viaje = vehiculo.recorrer(900)
roma.pintar(vehiculo)
# Creamos las personas con sus respectivos veh´ıculos
persona_1 = Persona("Raúl", 45, vehiculo)
persona_2 = Persona("Laura", 45, Auto())
persona_3 = Persona("Juan", 17, Auto())
# Las personas viajan, los n´umeros no calzan pero no importa
persona_1.viajar(roma, 99)
persona_2.viajar(santiago, 2)
persona_2.viajar(valparaiso, 500)
persona_2.viajar(santiago, 1000)
persona_3.viajar(lima, 6000)
persona_1.viajar(santiago, 1278)
persona_2.viajar(roma, 200)
然后我尝试运行一些例子(persona_1
,persona_2
,...)但我得到了这个,我不明白为什么!
El vehículo demoró 11.25 horas
<__main__.Ciudad object at 0x0000020249758BE0>
La persona Raúlllegó a <__main__.Ciudad object at 0x0000020249758BE0>en {} 1.2375horas, y ahora su auto es de color {} Verde
<__main__.Ciudad object at 0x000002024972B048>
La persona Laurallegó a <__main__.Ciudad object at 0x000002024972B048>en {} 0.025horas, y ahora su auto es de color {} Rojo
<__main__.Ciudad object at 0x0000020249722198>
La persona Laurallegó a <__main__.Ciudad object at 0x0000020249722198>en {} 6.25horas, y ahora su auto es de color {} Celeste
<__main__.Ciudad object at 0x000002024972B048>
La persona Laurallegó a <__main__.Ciudad object at 0x000002024972B048>en {} 12.5horas, y ahora su auto es de color {} Rojo
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-12-8d451dca4b3b> in <module>()
75 persona_2.viajar(valparaiso, 500)
76 persona_2.viajar(santiago, 1000)
---> 77 persona_3.viajar(lima, 6000)
78 persona_1.viajar(santiago, 1278)
79 persona_2.viajar(roma, 200)
<ipython-input-12-8d451dca4b3b> in viajar(self, ciudad, km_a_viajar)
20 tiempo_de_viaje = (self.vehiculo.km_max - km_a_viajar) / self.vehiculo.vel_prom
21 self.cuenta_horas = self.cuenta_horas + tiempo_de_viaje
---> 22 print('La persona ',format(self.nombre) + 'no llegó a ', format(self.lista_ciudades_visitadas[-1]) + ',se quedó en panne a las {}',format(tiempo_de_viaje))
23
24 class Auto:
IndexError: list index out of range
我不明白为什么它不能显示城市,它只显示&#34; main.object ......&#34;。此外,它表示列表超出范围,但-1只是最后一项!