If statement 如何验证用户的输入,直到他们输入正确的格式,然后如何退出布尔循环?(Python 3.4)

If statement 如何验证用户的输入,直到他们输入正确的格式,然后如何退出布尔循环?(Python 3.4),if-statement,python-3.x,while-loop,user-input,If Statement,Python 3.x,While Loop,User Input,所以我试图得到一个特定的格式。我需要用户只输入字母A到J以及数字1-10之间的数字。我还需要用户在中间输入一个空间。我需要不断询问用户,直到他们输入 “A4”或“J10”。我一直设法要求用户输入所有类型的内容,但我也阻止了我想要的格式,我真的不知道该怎么做,因为我已经尝试了一段时间 我的while循环试图排除各种无效输入,例如“4d”、“D”、“4”、“y9” 但我希望当用户输入类似“A1”或“G7”的内容时,while循环停止 alphabet=['A','B','C','D','E','F'

所以我试图得到一个特定的格式。我需要用户只输入字母A到J以及数字1-10之间的数字。我还需要用户在中间输入一个空间。我需要不断询问用户,直到他们输入 “A4”或“J10”。我一直设法要求用户输入所有类型的内容,但我也阻止了我想要的格式,我真的不知道该怎么做,因为我已经尝试了一段时间

我的while循环试图排除各种无效输入,例如“4d”、“D”、“4”、“y9”

但我希望当用户输入类似“A1”或“G7”的内容时,while循环停止

alphabet=['A','B','C','D','E','F','G','H','I','J']
数字=['1','2','3','4','5','6','7','8','9','10']
enterCoordinate=input('输入坐标xy(x在[A..J]中,y在[1..10]中)或s表示船舶状态:')
enterCoordinateL=enterCoordinate.lower()
坐标=enterCoordinate.split()
而(len(enterCoordinate)=4)或
(输入坐标[1]!=“”)或(输入坐标[0]不是字母表)或
(坐标[1]不是数字):
输入坐标=输入('输入坐标x y(x在[A..J]中)和y在[A..J]中
[1..10])或船舶状态的编号:')
如果(字母表中的输入坐标[0])和(输入坐标[1]='')和
(坐标[1]以数字表示)和len(enterCoordinate)==3:
ty=input('格式为立即')

您可以使用正则表达式检查模式:

import re
my_pattern=re.compile("^[A-J] [0-9]|10$")
my_strings=["A 4","J 10","4 D","d 4","Y 9"]
for my_string in my_strings:
    if my_pattern.match(my_string):
        print(my_string)
alphabet=['A','B','C','D','E','F','G','H','I','J']
数字=['1','2','3','4','5','6','7','8','9','10']
尽管如此:
enterCoordinate=list(输入('Enter Something'))
如果len(输入坐标)>=4:
enterCoordinate=enterCoordinate[:2]+[''.join(enterCoordinate[2:4])]

埃利夫·伦(enterCoordinate)好主意,但不是那样的具有比串联更低的优先级,因此您要选中“A-J][0-9]或10”。
import re
my_pattern=re.compile("^[A-J] [0-9]|10$")
my_strings=["A 4","J 10","4 D","d 4","Y 9"]
for my_string in my_strings:
    if my_pattern.match(my_string):
        print(my_string)
alphabet = ['A', 'B', 'C' ,'D' ,'E', 'F', 'G', 'H', 'I', 'J']
numbers = ['1','2','3','4','5','6','7','8','9','10']

while True:
    enterCoordinate  = list(input('Enter Something '))

    if len(enterCoordinate) >= 4:
        enterCoordinate = enterCoordinate[:2] + [''.join(enterCoordinate[2:4])]
    elif len(enterCoordinate) <=2:
        print('Your input is invalid')
        continue

    if not enterCoordinate[0] in alphabet:
        print('First element is invalid')
        continue
    elif enterCoordinate[1] != ' ':
        print('Second element is invalid')
        continue
    elif not enterCoordinate[2] in numbers:
        print('Third element is invalid')
        continue   
    break