Python으로 전함 게임을 할 때 사용합니다. 내 함수는 사용자의 '추측'입력을 확인하여 무한한 유효성 검사를 반복합니다. 10x10 격자에서 'a10'형식으로 추측하고 싶습니다. 그것을 발견 않습니다 - -하지만 오류가 인쇄 오류 문 끝없는 루프를 반환하는 사용자가 잘못된 값을 추측Python의 유효성 검사를 끝내지 마십시오
def validate_guess(self,guess):
while True:
if (len(guess)) in range(2, 4):
if guess[0] not in 'abcdefghij' or guess[1:] not in '1,2,3,4,5,6,7,8,9,10':
print("Sorry the Grid is a 10x10 square you must enter a valid position. Try again...")
continue
else:
return guess
else:
if len(guess) < 2 or len(guess) > 3:
print("Oops! That's too not the right amount of characters. Please try again...")
continue
경우 다음과 같이 내가 유효성 검사를하기 위해 구축 한 검증 기능입니다.
이
은 유효성 검사 기능은 내 게임의 부분 사용되는 곳 : 내가 진술하는 동안 두 가지를 가지고 있기 때문에 될 수 있으면while True:
print("\n")
# get guess from player one in coordinate form (example: a10)
guess = input("{}'s turn to guess: ".format(player1.player))
# strip characters from the guess input
guess = guess.strip()
# validate the guess
guess = self.validate_guess(guess)
# append the guess to a list for player 1
player1.guesses.append(guess)
# break down the coordinates into x and y variables
x, y = ship1.split_guess(guess)
# increment guesses
guesses += 1
# loop to assess whether, hit, miss or a won game
if any(guess in ship for ship in grid2.play_two_board):
print("HIT")
grid2.print_guess_board(x, y, "h")
for ship in grid2.play_two_board:
try:
ship.remove(guess)
print(len(Board.play_two_board))
self.check_if_sunk(ship)
win = self.play_one_win_check(player1.player)
if win == 1:
print ("GAVE OVER!")
break
except ValueError:
pass
else:
print("Miss!")
grid2.print_guess_board(x, y, "m")
확실하지? 여기에 정말로 붙어있어 모든 지침을 이해할 수 있습니다. 감사.
***************** 8 편집 - 실제로 그 값을 전달하지 않고 추측을 포함하는 기능을 변경했습니다. 입력 문에서하지만 여전히 같은 문제가 발생합니다.
def validate_guess(self):
guess = input("Please enter a location:")
while True:
if len(guess) in range(2, 4):
if guess[0] not in 'abcdefghij' or guess[1:] not in '1,2,3,4,5,6,7,8,9,10':
print("Sorry the Grid is a 10x10 square you must enter a valid position. Try again...")
continue
else:
return guess
else:
if len(guess) < 2 or len(guess) > 3:
print("Oops! That's too not the right amount of characters. Please try again...")
continue
그냥 이런 식으로 전화 :
while True:
print("\n")
# get guess from player one in coordinate form (example: a10)
# guess = input("{}'s turn to guess: ".format(player1.player))
# strip characters from the guess input
# guess = guess.strip()
# validate the guess
guess = self.validate_guess()
'true :'def validate_guess (self, guess) :'는 의미가없는 것처럼 보입니다. '추측'은 함수에 전달하는 인수입니다. 함수의 아무 것도 함수를 수정하거나 재정의하지 않기 때문에 함수가 실행되는 동안 동일한 값을 유지합니다. 수표를 통한 첫 번째 전달에서 '반환'진술에 도달하기위한 조건을 충족시키지 못하면 절대 안됩니다. 'while' 루프는 동일한, 실패한, 유효성 검사를 반복해서 수행합니다. – roganjosh
가능한 첫 번째 입력이 유효하지 않은 경우 다른 사용자에게 입력하라는 메시지가 표시 될 수 있습니다 (http://stackoverflow.com/questions/9609213/prompt-the-user-to-input-something-else-if-the- 첫 번째 - 입력 - 무효) – Prune
고마워요 - 당신이 무엇을 말하는 지 이해할 것 같아요 - 내가 편집 한 코드 (위에 표시된) 함수에 입력 문을 포함하도록 -하지만 여전히 같은 오류가 발생. –