Python:删除已经过时的用户输入

Python:删除已经过时的用户输入,python,python-3.x,for-loop,while-loop,user-input,Python,Python 3.x,For Loop,While Loop,User Input,我创建了自己版本的游戏《所有Python初学者游戏:战舰》。 用户必须定义两个坐标,X和Y 我做了一个验证,它拒绝任何不是整数的输入。如果输入为整数,代码将继续执行。但是,在最后,我需要将当前用户输入硬编码为字符串,否则代码将不会进入while循环,并在下一个回合开始时重新提示用户输入另一组坐标 事实上,这很好,但我觉得这不是最干净的处理方法 有人能提出更好的方法吗 # ships are positioned, user must sink them for turn in range(nu

我创建了自己版本的游戏《所有Python初学者游戏:战舰》。 用户必须定义两个坐标,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)

一种解决方案是在while循环之前将
guess\u col
设置为非
int

guess_col = ''
while ...:
我建议你学习函数。这是一个非常重要的工具,可以帮助您将代码组织成小的、连贯的、可重用的部分。例如,您可以编写一个函数
get_int()
,当用户键入数字时,该函数执行验证并返回值。然后可以重用此函数来获取输入,而无需像在当前解决方案中那样重复代码。你可以这样做

guess_col = get_int()
guess_row = get_int()

@事实上,他的代码提供了所有这些东西。谢谢。我可以在这里使用两个不同的函数,每个坐标一个,但是,如果我只使用一个函数,那么我不能提示用户:请输入坐标X,请输入坐标Y。我只能问一个“一般”问题:请输入坐标(不指定哪一个),或者我错了?