Python 字符串_标识符判断

# 标题:输入一个字符串标识符,判断这个标识符是否合法?
# 标识符:首字符必须是字母或下划线,后面的字符只能是字母、数字、下划线
# 不能是关键字(可以用keyword模块,iskeyword判断是不是关键字,kwlist所有的关键字列表)

import string
import keyword

alphas = string.ascii_letters + '_'
nums = string.digits
myInput = input("Identifier to test>")
len_s = len(myInput)

if len_s > 1:
 #先判断是不是关键字,再判断首字符是不是合法,合法再继续判断后面的字符是不是合法。
 if myInput not in keyword.kwlist:
  if myInput[0] not in alphas:
   print("invalid identifier")
  else:
   for i in myInput[1:]:
    if i not in alphas+nums:
     print("invalid identifier")
     break
   else:
    print("%s is valid identifier" % myInput)
 else:
  print("%s is keyword!" % myInput)
elif len_s == 1:
 if myInput in alphas:
  print("valid identifier")
 else:
  print("invalid identifier")
else:
 print("请输入一个字符串标识符。")

'''
第19-24行是一个for-else语句,在整个for循环里没有遇到break时测执行else。

性能提示:第20行if语句里有两个字符串合并的操作,被合并的字符串从始至终都没变过,在for循环里每次执行都会计算一次,我们可以把这两个字符串存为一个新的字符串,每次引用新的字符串,而不用每次重复计算了。

alphnums = alphas + nums
for i in myInput[1:]:
 if i not in alphnums:
  ...
'''

 

posted @ 2016-10-15 12:13  go_ahead  阅读(3727)  评论(0编辑  收藏  举报