Strona główna Polish Python Coders Group
   Strona główna   Pomoc Zaloguj się Rejestracja  
Witamy, Gość. Zaloguj się lub zarejestruj.
Czy dotarł do Ciebie email aktywacyjny?

Zaloguj się podając nazwę użytkownika, hasło i długość sesji

Aktualności: ##python.pl na FreeNode - ogarniamy zlot na Mazurach lub Podlasiu :>?
Szukaj Szukaj
Strony: [1]   Do dołu
Drukuj
Wątek: Lista, która wyświetla tylko trzecie imie  (Przeczytany 132 razy)
« : 18:56 11/07/18 »
wilk09 Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 10


Witam,

mam problem z kodem.Nie wiem co jest nie tak:

Kod
Wprowadzenie5Imion  = input("Wprowadź 5 imion: ")
ListaImion = []
ListaImion.append(Wprowadzenie5Imion)
print("Imiona to:", ListaImion)
print("Trzecie imię to: ",  ListaImion[3])

W konsoli wyskakuje mi taki komunikat:
Kod
Wprowadź 5 imion: asia,janek,ola,mirek,justyna
Imiona to: ['asia,janek,ola,mirek,justyna']
Traceback (most recent call last):
 File "C:/Nowy folder (2)/python/hello_word/R12_gromadzenie_danych_listy_i_slowniki.py", line 42, in <module>
   print("Trzecie imię to: ",  ListaImion[3])
IndexError: list index out of range

Mała pomoc ?


Zapisane
« Odpowiedz #1 : 19:13 11/07/18 »
Amany Offline
Hello World!

Zobacz profil
*

Reputacja: 9
Wiadomości: 22


Witam,

mam problem z kodem.Nie wiem co jest nie tak:

Kod
Wprowadzenie5Imion  = input("Wprowadź 5 imion: ")
ListaImion = []
ListaImion.append(Wprowadzenie5Imion)
print("Imiona to:", ListaImion)
print("Trzecie imię to: ",  ListaImion[3])

W konsoli wyskakuje mi taki komunikat:
Kod
Wprowadź 5 imion: asia,janek,ola,mirek,justyna
Imiona to: ['asia,janek,ola,mirek,justyna']
Traceback (most recent call last):
 File "C:/Nowy folder (2)/python/hello_word/R12_gromadzenie_danych_listy_i_slowniki.py", line 42, in <module>
   print("Trzecie imię to: ",  ListaImion[3])
IndexError: list index out of range

Mała pomoc ?

Hej ;-)

Przede wszystkim, polecam sprawdzanie tego co robi Twój kod, tutaj nawet zwykłym print().

Kod
Wprowadzenie5Imion  = input("Wprowadź 5 imion: ")
ListaImion = []
ListaImion.append(Wprowadzenie5Imion)
print("Imiona to:", ListaImion)
print("Trzecie imię to: ",  ListaImion[3])

Po pierwsze, po wprowadzeniu imion, Wprowadzenie5Imion jest stringiem, efekt Twojego działania jest taki:
Kod
'asia,janek,ola,mirek,justyna'  # to jest jeden string!

Następnie, dodajesz, za pomocą append, cały ten string do listy ListaImion i otrzymujesz coś takiego:
Kod
ListaImion = ['asia,janek,ola,mirek,justyna']
Jak widzisz, jest to jedna lista, zawierająca jeden string. Nie jest to lista z pięcioma elementami-stringami (imionami).
Następnie, wybierając trzecie imię zapominasz o tym, że "liczymy" od 0. Czyli, wołając [3] mówisz pythonowi, że chodzi Ci o czwarty element listy.

Przechodząc już do samego błędu, wyskakuje Ci on ponieważ Twoja lista zawiera jeden element (string), zatem ListaImion[3] po prostu nie istnieje. Nakierowując Cię na rozwiązanie, spróbuj input zbierać na przykład za pomocą pętli for - reszta pewnie sama wyjdzie. ;-)

Zapisane
« Odpowiedz #2 : 23:12 11/07/18 »
sig Offline
Professional Python User

Zobacz profil
***

Reputacja: 82
Wiadomości: 376


Ja bym użył split-a do zrobiena listy z stringa wejściowego, o tak

Kod
ListaImion  = input("Wprowadź 5 imion: ").split(' ')
print("Imiona to:", ListaImion)
print("Trzecie imię to: ",  ListaImion[2]) #wyświetlam element nr 2, bo pierwszy ma nr 0 (więc 3 będzie właśnie pod 2)
 
Wpisujesz imiona oddzielone spacjami, jak chcesz możesz w nawiasie za split dać inny separator. split() oznacza dowolny odstęp czyli spacja lub tab.
Zapisane
« Odpowiedz #3 : 02:21 12/07/18 »
Guaz Offline
Advanced Python User

Zobacz profil
**

Reputacja: 38
Płeć: Mężczyzna
Wiadomości: 261


Nie powtarzając po powyższych wiadomościach, dodam od siebie tylko tego co brakuje.
Idąc twoim przykładem wprowadzania po przecinku, powinieneś użyć split(',')
Musisz jednak pamiętać, że jeśli ktoś wprowadzi spacje przed lub po stringach, pasowałoby jeszcze odfiltrować te spacje.
Przykład aby oddzielane imiona mogły być przecinkami i/lub spacjami:
Kod
ListaImion = [imie.strip() for imie in input("Wprowadź 5 imion: ").split(',')]
Zapisane

Python 3.5.2 / Mint
« Odpowiedz #4 : 17:10 14/07/18 »
hurgadion Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 8


Hej,
generalnie masz w kodzie dość spory... bałagan... odpal poniższy kod, i dokładnie przeanalizuj, krok po kroku:
Kod:
a = []
print("Wprowadź 5 imion:")
for i in range(5):
    a.append(input("Imię nr " + str(i+1) + ": "))
print("Imiona to: " + " ".join(a))
print("Trzecie imię to: " + a[2])
Pzdr...  Uśmiech
Zapisane
Strony: [1]   Do góry
Drukuj
Skocz do:  

© 2007 - 2018 Polish Python Coders Group
Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines | Theme by PixelSlot