【发布时间】:2021-10-30 13:13:04
【问题描述】:
不确定这是否是正确的提问地点,但我确实需要帮助找出我做错了什么。我想编写一个程序来检查我的输入是否符合语法。
这些是每个语法规则的五个函数:
def molecule(q):
atom(q) # molecule starts with an atom
if q.peek() == "": # if the next letter in the queue is none(end of line) dequeue the letter (end function)
q.dequeue()
else: # otherwise check if the atom is followed by a number
number(q)
def atom(q):
capital_letter(q) # atom could be a single upper case letter
if q.peek() == "": # if it's the end of the line dequeue the letter (end the function)
q.dequeue()
else: # if it's not the end of the line, check if its a lowercase letter
lowercase_letter(q)
def capital_letter(q): # checks for capital letters
letter = q.dequeue()
if letter.isupper():
return
raise Syntaxerror("Missing capital letter")
def lowercase_letter(q): # checks for lowercase letters
letter = q.dequeue()
if letter.islower():
return
raise Syntaxerror("Expecting lowercase letter")
def number(q): # checks if numbers are greater than 2
letter = q.peek()
if int(letter) >= 2:
return
raise Syntaxerror("Expecting numbers greater than 2")
但是,在启动程序时,它并没有完全遵循语法。根据该程序工作的输入例如:Aa2 和 Ab 我得到的输出是(这是正确的):
Follows the syntax
但是,如下格式的输入不起作用(应该起作用):A、B12 和 A3。我得到的输入“A”的错误是:
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
对于 A3 和 B12,我得到:
Wrong! Expecting lowercase letter
我看不出我在代码中哪里做错了,为什么它不符合语法,感谢您的帮助!
【问题讨论】: