Wenn ich dieses Programm starte, erhalte ich manchmal einen Fehler. Dieser Fehler ist jedoch nicht möglich, da ich ein 8x8-Gitter verwende und die Eingänge so begrenze, dass sie nur Zahlen von 0 bis 8 sein können. 7, um der Tatsache zu folgen, dass Listenindizes bei 0 beginnen.Index außerhalb des Bereichs bei künstlicher Begrenzung
Der Benutzer muss Koordinaten eingeben (1-8), (AH) und das Programm wird überprüfen, um zu sehen, ob diese Koordinaten korrekt sind, indem die CompShips systematisch durchlaufen Liste und wiederholtes Vergleichen dieser Koordinaten mit den vom Benutzer angegebenen Koordinaten. Wenn die Kabel übereinstimmen, erscheint eine Nachricht und ein "Z" wird an diesen Koordinaten zu einem "X", was auf einen Treffer hinweist. Wenn die Schätzung nicht übereinstimmt, ändert sich ein "Z" an den Koordinaten, die eine MISS anzeigen, zu einem "M".
CompShips=[[1,0],[1,1],[2,2],[2,3],[2,4],[3,0],[3,1],[3,2],[5,4],[5,5],[5,6],[5,7],[1,7],[2,7],[3,7],[4,7],[5,7]]
FRow1=["Z","Z","Z","Z","Z","Z","Z","Z",]
FRow2=["Z","Z","Z","Z","Z","Z","Z","Z",]
FRow3=["Z","Z","Z","Z","Z","Z","Z","Z",]
FRow4=["Z","Z","Z","Z","Z","Z","Z","Z",]
FRow5=["Z","Z","Z","Z","Z","Z","Z","Z",]
FRow6=["Z","Z","Z","Z","Z","Z","Z","Z",]
FRow7=["Z","Z","Z","Z","Z","Z","Z","Z",]
FRow8=["Z","Z","Z","Z","Z","Z","Z","Z",]
def PrintFireBoard():
print(Index)
print(FRow1)
print(FRow2)
print(FRow3)
print(FRow4)
print(FRow5)
print(FRow6)
print(FRow7)
print(FRow8)
FireBoard=[FRow1,FRow2,FRow3,FRow4,FRow5,FRow6,FRow7,FRow8]
while len(CompShips) !=0 or CompSuccess==17:
FireRow=input("Please Choose The Row That You Wish To Fire Upon (1-8) ")
FireIndex=input("Please Choose The Column That You Wish To Fire Upon (A-H) ")
#As Lists start at 0
FireRow=int(FireRow)-1
if FireIndex==("A"):
FireIndex=0
elif FireIndex==("B"):
FireIndex=1
elif FireIndex==("C"):
FireIndex=2
elif FireIndex==("D"):
FireIndex=3
elif FireIndex==("E"):
FireIndex=4
elif FireIndex==("F"):
FireIndex=5
elif FireIndex==("G"):
FireIndex=6
elif FireIndex==("H"):
FireIndex=7
Guess=[FireRow,FireIndex]
#Check To See If Correct
UserSuccess=0
for i in CompShips:
if Guess==i:
CompShips.remove(Guess)
UserSuccess=1
else:
pass
if UserSuccess==1:
print("HIT")
print(FireRow)
print(FireIndex)
FireBoard[[FireRow][FireIndex]]=("H")
PrintFireBoard()
else:
print("MISS")
print(FireRow)
print(FireIndex)
FireBoard[[FireRow][FireIndex]]=("M")
PrintFireBoard()
erhalte ich die Fehlermeldung:
IndexError: string index out of range
Ermittelt Sie, in welcher Zeile 'IndexError' aufgetreten ist? – sam
Nur ein kleiner Kommentar, anstatt das Board so zu bauen, können Sie mit diesem raffinierten Trick Objekte in eine Liste erweitern. '[" Z "] * 8 'erzeugt" [' Z ',' Z ',' Z ',' Z ',' Z ',' Z ',' Z ',' Z '] 'so ' [["Z"] * 8] * 8 'erzeugt eine 8x8 Liste von Listen mit "Z" als Elementen. –
@AxelPersinger Das wird 8 Kopien des äußeren Arrays erstellen, wenn Sie also eines modifizieren, werden alle geändert. Sie müssen dies tun: '[['Z' für i in Bereich (8)] für j in Bereich (8)]' – user3080953