python字符串必须包含1位数字和1个字母

时间:2018-09-12 15:08:10

标签: python string alpha digit

我做了一个功能,要求在字符串中输入2个值。我正在尝试使输入必须包含1位数字和1个字母的组合。范例:3f 5h 我有以下代码,但我似乎无法获得数字和字母的条件。是因为.isdigit和.isalpha都是大约所有字符?

def chess(value1, value2):

    if len(value1) == 2 and len(value2) == 2:
        for char in value1, value2:
            if char.isalpha() and char.isdigit():
                print("Input is right format.")
            else:
                print("Input is NOT right format.")
    else:
        print("Input is NOT right format.")

value1, value2 = input('values: ') .split()

chess(value1, value2) 

仅使用

if char.isalpha():

if char.isdigit():

似乎可以正常工作。但是他们在一起却没有。

4 个答案:

答案 0 :(得分:0)

一种简单的方法来检查input的长度是否为2。

if len(a) == 2:
    if (a[0].isdigit() and a[1].isalpha()) or ((a[1].isdigit() and a[0].isalpha())):
        print('yes')
    else:
        print('no')

答案 1 :(得分:0)

BrightOne的答案就像一个咒语:

您可能可以为此使用正则表达式。现在,您可以执行value1 [0] .isalpha()和value1 [1] .isdigit()等等。

答案 2 :(得分:0)

import re
def chess(value1, value2):
    regex = "^\d[a-h]$"
    return all([re.match(regex, s) for s in (value1, value2)])

\d[a-h]仅匹配一位数字,后跟“ abcfefgh”中的一个字符。 ^$确保仅匹配长度为2的字符串。如果字符串s与正则表达式不匹配,则re.match(regex,s)返回None。

答案 3 :(得分:0)

我假设您对我的答案不了解正则表达式,但是您可以执行以下操作并编写一个函数来检查每个空格是否有效。

def validSpaceFormat(space):
    if len(space) == 2:
        if space[0].isalpha() and space[1].isdigit():
            return True
    return False 

def chess(value1, value2):
    if validSpaceFormat(value1) and validSpaceFormat(value2):
       print("Input correct.")
    else:
        print("Input wrong.")

value1, value2 = input('values: ').split()
chess(value1, value2) 

这是假设人们总是将动作输入为“ X1 Y2”

isalpha()isdigit()仅适用于字符,因此您需要索引字符串中的每个字符以检查其含义。