本文通过在实现一个python程序时遇到的一些问题来学习python程序。好,废话少说,先上代码:
#coding=gbkdb = {}#注册新用户def newuser ():prompt = 'login desired:'global dbwhile 1 :#输入用户名name = raw_input ( prompt )#检查该用户名是否已存在if db . has_key ( name ):prompt = 'name taken,try another:'continueelse :break#输入密码pwd = raw_input ( 'password:' )#保存注册信息,用一个字典元素存储db [ name ] = pwd#向老用户提供登录功能def olduser ():#输入老用户的用户名和密码name = raw_input ( 'login:' )pwd = raw_input ( 'password:' )global db#从字典中获取以用户名为键字的键值,即密码passwd = db . get ( name )if passwd == pwd :#登陆成功print 'welcome back' , namepasselse :#登录信息错误,返回菜单print 'login incorrect'return#主函数def showmenu ():#提示信息,用三重引号给出prompt = """(N)ew User Login(E)xisiting User Login(Q)uitEnter ur choice:""" #显示菜单后,程序根据等待来自用户的合法输入并根据选中的菜单项进入相应操作done = 0while not done :chosen = 0while not chosen :try :choice = raw_input ( prompt )[ 0 ]except ( EOFError , KeyboardInterrupt ):choice = 'q'print ' \n U picked: [ %s ]' % choiceif choice not in 'neq' :print 'please try again'else :chosen = 1if choice == 'q' : done = 1if choice == 'n' : newuser ()if choice == 'e' : olduser ()if __name__ == '__main__' :showmenu ()
新用户注册信息和老用户信息都会用字典存储。本程序主程序是showmenu(),还有两个小函数:newuser()和olduser(),分别处理新用户注册和老用户登陆问题。程序本身的注释应该可以让读者了解到本程序,那么我就不多说了。我主要讲讲在实现本程序时的一些问题
在实现该程序的时候会出现以下常见问题:
1.注释问题
在python中,单行注释以#开头。但是,如果用pydev或者别的什么IDE来编写程序是,如果开头不声明保存编码格式,就会默认使用ASCII码保存,那么代码中的中文就会有问题,即使中文在注释里面。
错误提醒如下:
那么要如何声明保存编码格式呢?很简单,只需在程序的开头加上#coding=gbk或者是#coding=utf-8即可
2.if __name__ == '__main__':
这个语句设计模块的知识,可以这么说,模块是对象,并且所有的模块都有一个内置属性_name_。一个模块的_name_值取决于你如何应用模块。在cmd中直接运行.py文件,则_name_的值就是'_main_',从而,这里if __name__ == '__main__':来判断是否在直接运行该.py文件。清楚该语句的含义后,我说说初学者易犯的一个错误,没有正确的格式。
打击看看这两条语句,看看哪条正确哪条错误:
(1)if __name__ == '__main__':
(2)if__name__=='__main__':
答案是(1)是对的,(2)是错的。如果用了(2),就会提醒你格式错误,如下:
所以,从以上(1)和(2)看出__name__ 和 '__main__'都要与它两旁的语句相隔一格。