[英]Python nested while loop issues
我對編碼比較陌生,我正在做一個項目,我制作一個類似於戰艦的游戲,例如 2 個玩家將 10 艘船放在一個“板上”,我為每個玩家制作了一個 2d 數組,其中 0 = 無船和 1 =船。 我已經做到了,所以第一個玩家必須為每艘船從 0-7 輸入一個 x 和 y 值,如果他們沒有從 0-7 輸入,它處於一個 while 循環中,所以它一直要求他們輸入一個值0-7。 我還想這樣做,如果一組坐標已經有一艘船在上面,那么它會要求玩家輸入一組新的坐標。 但是,我在使用嵌套的 while 循環時遇到了問題。
問題:
當我運行它並輸入兩個相同的坐標時,它會重復“您已經在這里放置了一個坦克。請輸入另一組坐標。”。 我認為當它通過外循環時,它可能也會跳過內循環?
p1Board = [[0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0]]
flag3 = True
flag4 = True
var1 = True
#Player 1 Tank 2
while var1 == True:
while flag3 == True:
p1XCoordTank2 = int(input("\nOn which x-coordinate would you like to place your second tank? "))
flag3 = False
if p1XCoordTank2 < 0 or p1XCoordTank2 > 7:
print("Please choose an x-coordinate that is in the range 0-7. ")
flag3 = True
while flag4 == True:
p1YCoordTank2 = int(input("On which y-coordinate would you like to place your second tank? "))
flag4 = False
if p1YCoordTank2 < 0 or p1YCoordTank2 > 7:
print("Please choose an y-coordinate that is in the range 0-7. ")
flag4 = True
if p1Board[p1XCoordTank2][p1YCoordTank2] == 1:
print("You already have a tank placed here. Please input another set of coordinates. ")
var1 = True
不知道如何修復它。 請讓我得到一些幫助。
我無法在以下消息中重現您的錯誤:
You already have a tank placed here. Please input another set of coordinates.
輸入相同的坐標時打印(fe p1XCoordTank2 = 0,p1YCoordTank2 = 0)。
但是,要阻止您 while 循環運行,您必須在某處將 var1 設置為 False:
flag3 = True
flag4 = True
var1 = True
#Player 1 Tank 2
while var1 == True:
while flag3 == True:
p1XCoordTank2 = int(input("\nOn which x-coordinate would you like to place your second tank? "))
flag3 = False
if p1XCoordTank2 < 0 or p1XCoordTank2 > 7:
print("Please choose an x-coordinate that is in the range 0-7. ")
flag3 = True
while flag4 == True:
p1YCoordTank2 = int(input("On which y-coordinate would you like to place your second tank? "))
flag4 = False
if p1YCoordTank2 < 0 or p1YCoordTank2 > 7:
print("Please choose an y-coordinate that is in the range 0-7. ")
flag4 = True
if p1Board[p1XCoordTank2][p1YCoordTank2] == 1:
print("You already have a tank placed here. Please input another set of coordinates. ")
var1 = True
else:
p1Board[p1XCoordTank2][p1YCoordTank2] = 1 #place the tank
var1 = False #stop the while loop
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.