В настоящее время я застрял в проблеме с NoneType и использовал функцию isalpha() в Python. То, что я хочу сделать, - лексический анализ, и я хочу разделить весь код на четыре категории. Вот мой кодPython: NoneType error in isalpha() function
import sys
import keyword #keyword.iskeyword()
**strong text**def check_chars(tmp,x):
if (tmp == "" or tmp.isalpha()) and (x =="" or x.isalpha()):
if keyword.iskeyword(tmp):
print("Key: "+ tmp)
return ""
return tmp+x
if tmp.isalpha() and not x.isalpha():
print("Var: "+tmp)
return x
separators = ['(',')','[',']','{','}',',',':','.',';','@','=','->','+=','-=','*=','/=','//=','%=','@=','&=','|=','^=','>>=','<<=','**=']
operators = ['+','-','*','**','/','//','%','<<','>>','&','|','^','~','<','>','<=','>=','==','!=']
f = open(sys.argv[1],'r')
program = f.read()
tmp = ""
for x in program:
tmp = check_chars(tmp,x)
if tmp in separators:
print("Sep: "+ tmp)
tmp = ""
if tmp in operators:
print("Ope: "+ tmp)
tmp = ""
if x is " ":
tmp = ""
Когда я достигаю конец первой строки в примере программы, которая это:
def funkce(a,b):
c=''
a**=b
if a<b:
print('ahoj\'ky',a)
else:
print(0xff,0b11101,0o777,.90e-10,123E+5,c)
print('''To je dlouhy
retezec pres mnoho
radku''')
funkce(-256+356,.85**.33)
возникает ошибка:
Traceback (most recent call last):
File "HW09.py", line 24, in <module>
tmp = check_chars(tmp,x)
File "HW09.py", line 5, in check_chars
if (tmp == "" or tmp.isalpha()) and (x =="" or x.isalpha()):
AttributeError: 'NoneType' object has no attribute 'isalpha'
Я не был бы удивлен, если ошибка повышается при начале программы. Но как возможно, что он поднимается в конце линии? Возможно ли, что ошибка каким-то образом связана с символом конца строки «\ n». Спасибо за предложения :)
Спасибо за вашу помощь :) Paul –