FSA
有限状态自动机

在这里插入图片描述

识别输入是否只含有大写字母以及数字

举例:HELLO
输出:True

在这里插入图片描述举例:hello
输出:False
在这里插入图片描述
python实现
代码如下:

def is_digigit_upper(tape: str):
    # 给出transition_table
    transition_table = [{'upper': 1, 'digit': 1},  # 初始状态
                        {'upper': 1, 'digit': 1}]  # 状态1
    current_state = 0
    s = 0  # 记录遍历tape的第几个元素
    for i in tape:
        if i.isdigit():
            t = 'digit'
        elif i.isupper():
            t = 'upper'
        else:
            t = 'other'
        if s == len(tape) - 1:
            if t == 'digit' or 'upper':
                return True  # 情况一:读到tape最后一个元素,该元素依然符合要求,返回True
            else:
                return False  # 情况二:读到tape最后一个元素,该元素不符合要求,返回False
        elif t == 'other':
            return False  # 情况三:未到tape最后一个元素,该元素不符合要求,返回False
        else:
            current_state = transition_table[current_state][t]
        s = s + 1

print("自动机:输入一个字符串,如果它只含大写字母和数字,返回True,否则返回False")
x = input("请输入")
print(is_digigit_upper(x))

自然语言作业

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐