Помощь в line.startswith()
Нужна помощь в line.startswith(). Нужно чтобы в "линии" было слово начинающиеся на " и заканчивающиеся на ". Делал так: elif line.startswith(r'".+?"'):
main.py
class MainInterpreter:
def __init__(self):
self.console = {}
self.functions = {}
def interpret(self, program):
lines = program.split("\n")
for line in lines:
if line.startswith("console.say"):
parts = line.split(" ")
if parts[1] in self.console:
print(self.console[parts[1]])
else:
print("Ошибка 100: Переменная без значения: " + parts[1])
if parts[1].startswith('"') and parts[1].endswith('"'):
print(parts[1])
elif line.startswith("console.get"):
parts = line.split(" ")
if len(parts) == 2:
print(f"{self.console.get(parts[1])}")
else:
print("Ошибка 200: Неправильное построение. Имели вы в виду: console.get название_переменной?")
elif line.startswith("ent"):
parts = line.split(" ")
if len(parts) == 4: # проверка на то, что, правильно ли пользователь указал построение? (тип название значение)
if parts[2] == "=":
try:
self.console[parts[1]] = int(parts[3])
except:
print(
'Ошибка 101: Неверное значение числовой переменной. Значение должно быть целым и от -2 147 483 648 до 2 147 483 647.')
else:
print("Ошибка 300: Неверный знак присвоения или сравнения.")
else:
print("Ошибка 201: Неправильное построение. Имели вы в виду: тип название = значение?")
elif line.startswith("frac"):
parts = line.split(" ")
if len(parts) == 4: # проверка на то, что, правильно ли пользователь указал построение? (тип название значение)
if parts[2] == "=":
try:
self.console[parts[1]] = float(parts[3])
except:
print(
"Ошибка 102: Неправильное значение числовой переменной. Значение должно быть дробным и от -3.4028235E+38 до 3.4028235E+38.")
else:
print("Ошибка 300: Неверный знак присвоения или сравнения.")
else:
print("Ошибка 201: Неправильное построение. Имели вы в виду: тип название = значение?")
elif line.startswith("lin"):
parts = line.split(" ")
if len(parts) == 4: # проверка на то, что, правильно ли пользователь указал построение? (тип название значение)
if parts[2] == "=":
if parts[3] == r'+?':
try:
self.console[parts[1]] = str(parts[3])
except:
print(
"Ошибка 103: Неверное значение строчной переменной. Значение должно состоять из букв и цифр.")
else:
print("Ошибка 300: Неверный знак присвоения или сравнения.")
else:
print("Ошибка 201: Неправильное построение. Имели вы в виду: тип название = значение?")
elif line.startswith("bool"):
parts = line.split(" ")
if len(parts) == 4: # проверка на то, что, правильно ли пользователь указал построение? (тип название значение)
if parts[2] == "=":
if parts[3] == "true":
self.console[parts[1]] = True
elif parts[3] == "false":
self.console[parts[1]] = False
else:
print(
"Ошибка 104: Неверное значение булевой переменной. Оно должно равняться 'true' или 'false'.")
else:
print("Ошибка 300: Неверный знак присвоения или сравнения.")
else:
print("Ошибка 201: Неправильное построение. Имели вы в виду: тип название = значение?")
elif line.startswith("start"):
pass
elif line.startswith("FD"):
print(f"P: {program}")
print(f"L: {lines}")
print(f"C: {self.console}")
print("!WARNING! FD-Mode in beta test, if you find bug(s) write me on GitHub")
else:
print("Ошибка: Неизвестная команда.")
interpreter = MainInterpreter()
program = ""
while True:
try:
sprogram = str(input())
program = program + '\n' + sprogram
if sprogram == "start":
interpreter.interpret(program)
except:
exit()