FSA(有限状态自动机)python代码实现 自然语言处理作业
FSA有限状态自动机def is_digigit_upper(tape: str):# 给出transition_tabletransition_table = [{'upper': 1, 'digit': 1},# 初始状态{'upper': 1, 'digit': 1}]# 状态1current_state = 0s = 0# 记录遍历tape的第几个元素for i in tape:
·
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))
自然语言作业
更多推荐
所有评论(0)