|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Dec 2007
Città: brianza
Messaggi: 717
|
[Python] Strano comportamento funzione
provando una funzione mi capita una cosa strana:
Codice:
def Trova(Stringa, Carattere, Inizio=0): Indice = Inizio while Inizio < len(Stringa): if Stringa[Indice] == Carattere: return Indice Indice = Indice + 1 return -1 Stringa = "coccodrillo" Carattere = 'c' Trova(Stringa, Carattere) Codice:
Traceback (most recent call last): File "<input>", line 1, in <module> File "<input>", line 4, in Trova IndexError: string index out of range
__________________
AMD Ryzen 9700X MSI RX 480 Gaming X 8G ASRock B850 Pro-A Windows 11 Pro RAM DDR5 16GBx2 TEAMGROUP T-Create Expert 6000 MHz CL30 SSD Crucial T500 4TB case Corsair Carbide 200R |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Il problema è che nel while referenzi Inizio anziché Indice.
![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Dec 2007
Città: brianza
Messaggi: 717
|
![]() mi sa che dovremo dirlo anche a quelli dell Howtothink visto che ho fatto copia-incolla del loro esempio ![]()
__________________
AMD Ryzen 9700X MSI RX 480 Gaming X 8G ASRock B850 Pro-A Windows 11 Pro RAM DDR5 16GBx2 TEAMGROUP T-Create Expert 6000 MHz CL30 SSD Crucial T500 4TB case Corsair Carbide 200R |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
![]() ![]() Segnalalo, se ti va. ![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Dec 2007
Città: brianza
Messaggi: 717
|
ho un'altro problema:
Codice:
class Mazzo: def __init__(self): self.Carte = [] for Seme in range(4): for Rango in range(1, 14): self.Carte.append(Carta(Seme, Rango)) def __str__(self): s = "" for i in range(len(self.Carte)): s = s + " "*i + str(self.Carte[i]) + "\n" return s def Mescola(self): import random NumCarte = len(self.Carte) for i in range(NumCarte): j = random.randrange(i, NumCarte) self.Carte[i], self.Carte[j] = self.Carte[j], self.Carte[i] def RimuoviCarta(self, Carta): if Carta in self.Carte: self.Carte.remove(Carta) return 1 else: return 0 def PrimaCarta(self): return self.Carte.pop() def EVuoto(self): return (len(self.Carte) == 0) def Distribuisci(self, ListaMani, NumCarte=999): Codice:
Mazzo1 = Mazzo() Mazzo1.Mescola() Codice:
Traceback (most recent call last): File "<input>", line 1, in <module> AttributeError: Mazzo instance has no attribute 'Mescola' ![]()
__________________
AMD Ryzen 9700X MSI RX 480 Gaming X 8G ASRock B850 Pro-A Windows 11 Pro RAM DDR5 16GBx2 TEAMGROUP T-Create Expert 6000 MHz CL30 SSD Crucial T500 4TB case Corsair Carbide 200R |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
A me funziona (non trovava soltanto "Carta"):
Codice:
class Mazzo: def __init__(self): self.Carte = [] for Seme in range(4): for Rango in range(1, 14): self.Carte.append(Carta(Seme, Rango)) def __str__(self): s = "" for i in range(len(self.Carte)): s = s + " "*i + str(self.Carte[i]) + "\n" return s def Mescola(self): import random NumCarte = len(self.Carte) for i in range(NumCarte): j = random.randrange(i, NumCarte) self.Carte[i], self.Carte[j] = self.Carte[j], self.Carte[i] def RimuoviCarta(self, Carta): if Carta in self.Carte: self.Carte.remove(Carta) return 1 else: return 0 def PrimaCarta(self): return self.Carte.pop() def EVuoto(self): return (len(self.Carte) == 0) def Distribuisci(self, ListaMani, NumCarte=999): pass def Carta(Seme, Rango): return Seme, Rango Mazzo1 = Mazzo() Mazzo1.Mescola()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Dec 2007
Città: brianza
Messaggi: 717
|
adesso va anche a me. Probabilmente era un errore di indentazione che sballava un po' tutto.
__________________
AMD Ryzen 9700X MSI RX 480 Gaming X 8G ASRock B850 Pro-A Windows 11 Pro RAM DDR5 16GBx2 TEAMGROUP T-Create Expert 6000 MHz CL30 SSD Crucial T500 4TB case Corsair Carbide 200R |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:21.