我在Python游戏《 Battleship》中创建了所有初学者的游戏版本。 用户必须定义两个坐标X和Y。
我进行了验证,该验证拒绝了任何不是整数的输入。如果输入为整数,则代码将继续执行。但是,最后,我需要对当前用户输入的字符串进行硬编码,否则该代码将不会进入while循环,并在下一回合开始时提示用户输入另一组坐标。
这实际上可以很好地工作,但是我觉得这不是处理此问题的最干净的方法。
有人可以建议一种更好的方法吗?
# ships are positioned, user must sink them
for turn in range(num_of_turns):
print("Turn", turn + 1)
while type(guess_col) is not int:
try:
guess_col = input("Enter coordinate X: ")
guess_col = int(guess_col)
except ValueError:
print("Enter coordinate X again")
continue
while type(guess_row) is not int:
try:
guess_row = input("Enter coordinate Y: ")
guess_row = int(guess_row)
except ValueError:
print("Enter coordinate Y again")
continue
# do stuff (sink ships, miss ships, etc...)
guess_col = str(guess_col)
guess_row = str(guess_row)
答案 0 :(得分:0)
一种解决方案是在while循环之前将guess_col
设置为非int
的值:
guess_col = ''
while ...:
我建议您了解函数。这些是非常重要的工具,可帮助您将代码组织为细小,连贯且可重用的片段。例如,您可以编写一个函数get_int()
,该函数进行验证并在用户键入数字时返回值。然后,您可以重复使用此函数以获取输入,而无需像在当前解决方案中那样重复代码。您可以做类似的事情
guess_col = get_int()
guess_row = get_int()