python text racing - problem s classmi a for-c. [vyriesene]

Podělte se o své zkušenosti s jinými jazyky.
Odpovědět
Uživatelský avatar
richardos24
Příspěvky: 186
Registrován: červen 14, 2012, 4:51 pm

python text racing - problem s classmi a for-c. [vyriesene]

Příspěvek od richardos24 » listopad 2, 2014, 1:11 pm

Zdravim po dlhej dobe, za ten cas sa ucim robit aspon zakladne vecicky v pythone, lenze dnes som narazil na daco nad cim si lamem dlho hlavu.

Je to pravdepodobne daco uplne primitivne, ale fakt neviem co s tym.
Skusam vytvorit cisto textovu hru v pythone, ktora simuluje formulove zavody. Mam pole s nazvom piloti, kde su vsetci piloti startujuci do zavodu. Potom mam vytvorenu "triedu" pilot, pricom kazdy pilot ma svoje meno. Cez for-cyklus potom chcem spravit, aby kazdemu pilotovi pridelilo meno na zaklade ich "indexu" (mieste) v tabulke:

Kód: Vybrat vše

class pilot:
    def __init__(self, meno):
        self.meno = meno
piloti = ["Hamilton","Rosberg","Ricciardo","Vettel","Bottas","Massa","Alonso","Raikkonen","Button"]
for i in range(len(piloti)): pilot[i].meno = piloti[i]
Nanestastie mi to vyhodi pri poslednom riadku error:
TypeError: 'type' object is not subscriptable

Mozte mi s tym prosim vas poradit? Budem vam vdacny :) .
Naposledy upravil(a) richardos24 dne listopad 2, 2014, 7:32 pm, celkem upraveno 1 x.

Uživatelský avatar
richardos24
Příspěvky: 186
Registrován: červen 14, 2012, 4:51 pm

Re: python text racing - problem s classmi a for-cyklami

Příspěvek od richardos24 » listopad 2, 2014, 1:15 pm

PS: medzera za piloti = je len kvoli sirke pismen, v skutocnosti tam ziadna nie je

Uživatelský avatar
D-Sheep
Příspěvky: 768
Registrován: září 7, 2011, 10:17 pm
Facebook: http://facebook.com/sheepdave
Bydliště: Praha, CZE
Kontaktovat uživatele:

Re: python text racing - problem s classmi a for-cyklami

Příspěvek od D-Sheep » listopad 2, 2014, 5:53 pm

No, python sice neumím, ale jen z chybové hlášky je mi jasné, co je špatně. Problém je ve výrazu "pilot", protože pilot je třída. Nejdřív by sis měl přejmenovat array jmen na "jmena" a potom si vytvořit array instancí té třídy s názvem "piloti". Jméno každému pilotovi přiřadíš při vytvoření instance díky konstruktoru. Přepis v C++:

Kód: Vybrat vše

class Pilot {
public:
    Pilot (string name) { this->name = name; }
    string name;
};

...

string jmena[] = {"Hamilton","Rosberg","Ricciardo","Vettel","Bottas","Massa","Alonso","Raikkonen","Button"};
const int pocet_jmen = 9;

Pilot* piloti[pocet_jmen];
for (int i = 0; i < pocet_jmen; i++)
    piloti[i] = new Pilot(jmena[i]);

Uživatelský avatar
richardos24
Příspěvky: 186
Registrován: červen 14, 2012, 4:51 pm

Re: python text racing - problem s classmi a for-cyklami

Příspěvek od richardos24 » listopad 2, 2014, 7:31 pm

funguje, diky moc :)

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host