• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Indekosowanie

Cloud VPS
0 głosów
218 wizyt
pytanie zadane 15 lutego 2016 w Python przez Ravus Początkujący (470 p.)

Witam was drodzy koledzy Programiści.

Napisałem program edukacyjny który mam zamiar wykorzystać w przyszłości. Ale podczas kompilowania wyskakuje taki oto soczysty błąd.  

"Traceback (most recent call last):
  File "C:\Users\Mutu\Desktop\Python Luty 2016\Indeksowanie.py", line 8, in <module>
    print(word,"[",number,"]","  ",word[number])
TypeError: list indices must be integers or slices, not str"

Chcę aby mój program wypisał litery przy wprowadzonym numerz indeksu. Tutaj łapcie kod.

import random
print("Ten program pozwoli ci zrozumić zasadę indeksowania wprowadzając słowo ,a następnie cyfrę poznasz litere odpowiadająca temu że  numerowi w indexie ") 
word = input("Wprowadz słowo: ")
number = input("Wprowadz cyfrę: ")
input("W cele kontynuacji naciśnij enter")
for i in range(1):
    print(word,"[",number,"]","  ",word[number])

input("^.^")

 

1 odpowiedź

+1 głos
odpowiedź 15 lutego 2016 przez Tomatosoup Pasjonat (18,530 p.)

Twój number to string, nie możesz odwołać się do znaku word[] przez string bez uprzedniego rzutowania na int, u ciebie teraz to wygląda na przykład tak: word["1"].

number = int(input("Wprowadz slowo: ")

Zrób tak i powinno działać.W traceback komunikat TypeError dość jasno mówi dlaczego twój program się wysypuje.

Do tego po wprowadzeniu number na twoim miejscu sprawdziłbym, czy przypadkiem index nie wykracza poza długość stringa word

komentarz 15 lutego 2016 przez Ravus Początkujący (470 p.)

Dziękuje za pomoc :D 

A co do sprawdzenia czy zmieniłbyś coś w moim aktualnym ? 

import random
print("Ten program pozwoli ci zrozumić zasadę indeksowania wprowadzając słowo ,a następnie cyfrę poznasz litere odpowiadająca temu że  numerowi w indexie ") 
word = input("Wprowadz słowo: ")
number = int(input("Wprowadz cyfrę: "))
length = len(word) #długość wprowadzonego łańcucha
length -= 1
input("W cele kontynuacji naciśnij enter")
if number > length:
    number = int(input("Wprowadz ponownie cyfrę: "))
for i in range(1):
    print(word,"[",number,"]","  ",word[number])

input("^.^")

 

komentarz 16 lutego 2016 przez Tomatosoup Pasjonat (18,530 p.)
import random
print("""Ten program pozwoli ci zrozumić zasadę indeksowania
		wprowadzając słowo, a następnie cyfrę poznasz litere
		odpowiadająca temu że  numerowi w indexie""")
		#teraz print jest bardziej czytelny
word = input("Wprowadz słowo: ")
number = int(input("Wprowadz cyfrę: "))
#length = len(word) moim zdaniem niepotrzebne wprowadzenie zmiennej
#length -= 1
input("W cele kontynuacji naciśnij enter")
if number >= len(word):
	number = int(input("Wprowadz ponownie cyfrę: "))
	#przydałby się komunikat dlaczego mamy wprowadzić ponownie
print(word,"[",number,"]","  ",word[number]) #ta pętla jest niepotrzebna
print("^.^") #jeżeli input nie czeka na żaden znak to po prostu print

 

Nie znaleziono podobnych pytań

93,456 zapytań

142,451 odpowiedzi

322,721 komentarzy

62,837 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...