В Python я хочу знать, как я могу выдать строки, которые проверяют:
- , если что-то содержит только буквенно-цифровые символы
- , если что-то содержит только цифры
- если что-то не содержит ни буквенно-цифровых символов, ни цифр.
Мне трудно разобраться в синтаксисе, и мне особенно нужны такие строки вместо использования встроенных функцийдля лексического анализа.Следующее прояснит идею того, что я пытаюсь сделать:
alphanumeric=r'[a-zA-Z]+'
digit=r'[0-9]'
other=r'![a-zA-Z_0-9]'
alphabet = {alphanumeric ,digit,other}
Этот алфавит вместе с другими атрибутами DFA будет передан в функцию dfa объекта run_with_input_list () с некоторой определенной пользователем строкой.Структура класса dfa ниже:
class DFA:
current_state = None
def __init__(self, states, alphabet, transition_function, start_state, accept_states): #5-tupple
self.states = states
self.alphabet = alphabet
self.transition_function = transition_function
self.start_state = start_state
self.accept_states = accept_states
self.current_state = start_state
return
def transition_to_state_with_input(self, input_value):
if ((self.current_state, input_value) not in self.transition_function.keys()):
self.current_state = None
return
self.current_state = self.transition_function[(self.current_state, input_value)]
return
def in_accept_state(self):
if self.current_state in self.accept_states:
print("String Accepted")
else:
print("String Rejected")
def go_to_initial_state(self):
self.current_state = self.start_state
return
def run_with_input_list(self, input_list):
self.go_to_initial_state()
for inp in input_list:
self.transition_to_state_with_input(inp)
continue
return self.in_accept_state()
pass
def validity(self,input_list): #checking whether the input string is valid
for a in input_list:
if a in self.alphabet:
continue
else:
print("Invalid String")
return 0
return 1