我已经在python中编写了一段时间,我偶然发现了Codecademys的练习,其中一个项目就是创建一个战舰游戏,将5x5网格中的2x1战舰放置。在我的女朋友正确猜到这艘船连续3次之后,我注意到了一种模式。 col的randint和行的randint从0开始。然后程序终止。再次启动该程序后,答案是1,2。接下来的三个答案是2,3,3,4,4,0。为什么会发生这种情况而不是真正的随机性?
代码如下:
import os, sys
from random import randint
os.system("cls")
board = []
for x in range(0, 5):
board.append(["O"] * 5)
def print_board(board):
for row in board:
print " ".join(row)
print_board(board)
def random_row(board):
return randint(0, len(board) - 1)
def random_col(board):
return randint(0, len(board[0]) - 1)
ship_row = random_row(board)
ship_col = random_col(board)
guess_row = int(raw_input("Guess Row:"))
guess_col = int(raw_input("Guess Col:"))
# Write your code below!
while guess_row!=ship_row and guess_col!=ship_col:
print"You missed my battleship!"
for i in range(len(board)):
if i==guess_col:
board[guess_row][i]="X"
print_board(board)
guess_row = int(raw_input("Guess Row:"))
guess_col = int(raw_input("Guess Col:"))
print"Congratulations! You sank my Battleship!"
答案 0 :(得分:6)
你的情况有一个错误 - 你应该检查行或列是否错误,而不是两者都是错误的。事实上,如果只有一个数字是错误的,那么你的程序就说你赢了 - 所以有很多输入都是赢的。你注意到的模式只是巧合。