列出一维Python战舰中的问题

2024-06-13 08:03:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚开始学习python,在尝试编写一个简单的单人战舰的一维版本时遇到了一些麻烦。在

有两件事我似乎做不到:

  1. 我创建了一个一维列表(即游戏板),但需要显示/打印列表中重复元素的索引。换句话说,我如何打印一个只显示板中元素索引的列表?

  2. 如果猜错了,我想用“*”替换那个元素。例如,如果我错误地猜测位置为5个元素组成的电路板中的4,我想显示:

    {/cdp}

此外,我想把获胜的命中率显示为“X”:

1 2 X * 5

以下是我当前的代码:

^{pr2}$

谢谢你,并为这个蹩脚的问题道歉。在


Tags: 代码版本游戏元素列表错误两件事cdp
2条回答

为了实现您的两个显示功能,我建议只让您的board列表保存显示值,因为您无论如何都不会在其他地方使用它。在

from random import randint

ship=randint(1, 5)
board = ['1', '2', '3', '4', '5']

print ("Let's play Battleship!")

attempts = 1
while attempts < 4:
    print(' '.join(board))
    guess = int(input("Guess Where My Ship Is: "))
    if guess == ship:
        print ("Congratulations Captain, you sunk my battleship!")
        board[guess - 1] = 'X'
        break
    else:
        print ("You missed my battleship!")
        board[guess - 1] = '*'
        if attempts<3:
            print("Try again!")
        elif attempts==3:
            print("Better luck next time, Captain!")
    attempts+=1

print(' '.join(board))

还有一件事:当你选择飞船的索引时,你有一个错误(应该在[1,5]范围内),我已经纠正了这个错误。在

如果您正在扩展战舰程序,并且必须有一个打印列表索引的函数(除非值是'*'或{}),一种方法是简单地执行以下操作:

^{pr2}$

好的做法:将电路板的大小设置为一个变量,这样就可以定期引用它。把这个放在上面

size = 5 # Can be changed later if you want to make the board bigger

下一步,根据这一点选择你的船位

^{pr2}$

不是让一个板充满0,而是动态地生成板,这样它就已经预先填充了可能的值。在

^{3}$

然后,在游戏逻辑的内部,在“你错过了我的战舰”一行之后,改变棋盘上的相关方块

...
print("You missed my battleship!")
number_guess = int(guess) - 1 # Because lists are zero-indexed
board[number_guess] = "*" # Assign "*" to the spot that was guessed
if attempts < 3:
    ...

相关问题 更多 >