print("----BATTLESHIPS 3.0 By NAME----")
print("")
print("")
size = input("Map size: ")
size = size.replace(" ", "")
print("------")
keys = {1:'A',2:'B',3:'C',4:'D',5:'E',6:'F',7:'G',8:'H',9:'I',10:'J',11:'K',12:'L',13:'M',14:'N',15:'O',16:'P',17:'Q',18:'R',19:'S',20:'T',21:'U',22:'V',23:'W',24:'X',25:'Y',26:'Z'}
#COORDINATES
for h in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
for b in range(1, int(size) + 1):
num = [h, b]
#print(num, end=' ')
#COORDINATES
dict = {}
guess = input("Guess: ")
guess = guess.lower()
guess = guess.replace(" ", "")
print("---")
while guess:
if guess in dict:
print("Whoops! You've already hit that coordinate")
elif guess not in num:
print("Woah! That isn't a square!")
#elif int(guess[1:]) > 10 and int(guess[1:]) >= 1:
#print("Woah! That isn't a square!")
else:
dict[guess]=guess
print("Hit", guess.upper())
guess = input("Guess: ")
guess = guess.lower()
guess = guess.replace(" ", "")
print("---")
yn = input("List your guesses? (yes or no)")
yn = yn.lower()
if yn == "yes":
print("------")
print("GUESSES:")
print("---")
for i in dict:
print("-", i.upper())
elif yn == "no":
print("Ok, bye!")
else:
print("---")
print("Please don't try and trick me. No scores for you!")
我遇到很多麻烦。我应该创建一个程序来扩展一个名为Bomb's Away的简单程序。我试图限制地图的大小,但没有做得很好。我输入的所有内容都表明它不是正方形。
我的问题图片: http://i.imgur.com/iWZDxoH.png
要求:
Bombs Away基于战舰游戏,两名玩家在地图上猜测位置。地图上的每个位置都由字母编号位置标识。在原始问题中,程序记录了玩家输入的每个位置。如果已经记录了坐标,程序就这么说了。
允许用户设置地图的大小。地图总是正方形的。地图不能超过我们的字母表中找到的字符数(即26个字符)。地图的最小尺寸为5列。程序会提示用户提供地图的大小。
输入地图大小时,程序会确保输入了有效数字。如果不是,则向用户显示输入有效号码的消息。在输入可接受的数字之前,用户无法继续。
如果用户键入有效坐标,程序将存储该信息。设计一种创造性的方法,向用户展示已记录坐标。
如果用户键入不存在的坐标,请创建性地向用户显示此消息。不得存储这些坐标。仅存储有效坐标。
答案 0 :(得分:0)
您继续将num
重新绑定到新的列表对象,该列表对象仅包含当前h
和b
值:
for h in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
for b in range(1, int(size) + 1):
num = [h, b]
最后,如果您输入10
作为尺码,则会获得num = ['Z', 10]
。用户输入的坐标不会成为该列表的一部分。
您需要将num
设置为空列表并追加新坐标,您已将h
和b
值连接到新字符串中:
num = []
for h in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
for b in range(1, int(size) + 1):
num.append(h + str(b))
您可以使用更紧凑的Python代码来生成相同的结果;使用列表理解和字符串格式:
num = ['{}{}'.format(h, b + 1)
for h in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" for b in range(int(size))]
您可能希望限制地图的高度和宽度,因此您需要限制使用的字母数量;你可以按尺寸切片:
num = []
size = int(size)
for h in "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[:size]:
for b in range(1, size + 1):
num.append(h + str(b))
请注意size
应始终输入为仅的数字!