我目前停留在問題NoneType和使用功能因而isalpha()在Python。我想要做的是詞法分析,我想將整個代碼分成四類。這是我的代碼的Python:在因而isalpha NoneType錯誤()函數
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」有關聯。謝謝你的建議:)
謝謝您的幫助,保羅:) –