2017-03-22 1 views
0

현재 프로그래밍 기술을 연습하기 위해 전함 게임을하고 있습니다. 기능적인 코드를 가지고 있지만 누가 내 코드를 for 루프로 깨뜨릴 수 있는지 궁금합니다.내 코드를 루프로 깨기

import random 
def main(): 
    board = [] 
    for i in range(0,5): 
     board.append(random.randint(1,50)) 

    print(board) #test purposes 

    guess=int(input("enter number between 1-50")) 

    if guess == board[0]: 
     print("hit") 
     board[0]="hit" 
    elif guess != board[0]: 
     print("miss") 
     board[0]="miss" 

참고 보드 [0-5]를 확인하기 위해 if 문을 여러 번 수행하려고합니다. 대신 5 번 반복하는 나는이 같은 일을 생각하고 있었는데 :

for x in range(0,5): 
    if guess == board[x]: 
     print("hit") 
     board[x]="hit" 
    else: 
     print("miss") 
     board[x]="miss" 

을하지만 그것이 있는지 확인하는 각 입력의 경우 5를 먹고 싶어 반면 그냥 1의 입력을 받아으로이 작동하지 않습니다 입력이 보드 [0-5]와 같습니다.

어떤 도움을 주셔서 감사합니다. for 루프에서

+0

을 당신은 (즉, 이동'추측 = ...'루프 내부) – BlackBear

+0

당신이 원하는 아닌 '추측 = INT를 수행 할 때마다 새로운 추측을 요청해야 (입력 ("1-50 사이의 숫자를 입력하십시오")) '루프에 있습니까? –

답변

0

쓰기 추측으로는, 들여 쓰기에주의 당신이 달성하려고하는 것을 아주 잘 모르겠지만, 내가이 생각하는

import random 
def main(): 
    board = [] 
    for i in range(0, 5): 
     board.append(random.randint(1, 50)) 
     guess = int(input("enter number between 1-50 : ")) 
     print(board) # test purposes 

     if guess == board[0]: 
      print("hit") 
      board[0] = "hit" 
     elif guess != board[0]: 
      print("miss") 
      board[0] = "miss" 
0

:

import random 
def main(): 
    board = [] 
    for i in range(0,5): 
     board.append(random.randint(1,50)) 

    print(board) #test purposes 

    guesses = [] 
    try_nr = 0 
    while try_nr < 5: 
     try_nr += 1 
     guess = int(input("enter number between 1-50")) 
     guesses.append(guess) 

    for i in enumerate(guesses): 
     i = i[0] 
     if guesses[i] in board: 
      print("hit") 
      # board[0]="hit" --> not quite sure what you want to achieve here? 
     else: 
      print("miss") 
      # board[0]="miss" --> not quite sure what you want to achieve here? 

NB1 : 코드를 작성하는 데 더 많은 깔끔하고 밀집된 방법이 있지만 이것이 도움이됩니다. 필요한 경우 스스로 완성할 수 있는지 확인하십시오.

NB2 : elif 성명을 else으로 변경했습니다. 귀하의 방정식에는 두 가지 가능한 답 (히트 또는 미스) 만있을 수 있습니다. elif을 사용하면 파이썬이 if 문을 완전히 다시 고려/재 계산하도록하고 있으며 else을 사용하는 경우 if 문을 한 번만 고려합니다.

0

enumerate() 함수를 사용하여 for 루프에 카운터를 추가 할 수 있습니다. 이것은 유용 할 것이다.

board = [12, 4, 76, 2] 
for index, number in enumerate(board): 
    print index, number 

#output 
# 0 12 
# 1 4 
# 2 76 
# 3 2 

당신은 5 가지 추측을 원한다고 했습니까? 당신이 뭔가를 할 수 있습니다 :

for i in range(5): 

    guess=int(input("enter number between 1-50")) 

    for index, number in enumerate(board): 
     if guess == number 
      print("hit") 
      board[index] = "hit" 
     else: 
      print("miss") 
      board[index] = "miss"