errortimes=0
while errortimes<3:
user=raw_input("user:")
password=raw_input("password:")
if user=='123' and password=='456':
#正确后允许进入并退出循环
print "enter"
break
else:
#错误时,出错计数加1
print "Error , enter again:"
errortimes+=1
else:
#错误达到三次,结束循环
print "You are not allowed to enter!"
给你写个简单的例子你看看。跟你写的差别不大,要实现输入三次失败就禁止进入,只需要加一个计数的变量就行了,这里是errortimes。当error times达到三次,就中值循环。灵活借鉴,不要生搬硬套。
再说你写的问题:
if username = bizhenwei:
这句是比较的,应该用 == 而不是 = 也即if username == bizhenwei:
else:
print"repeat!"
这里print前缺少缩进。print后缺少空格。
# -*- coding:utf-8 -*-# Author Caoxlimport sys account_file='E:\user.txt'locked_file='E:\locked.txt' def deny_account(username): print('您的用户已被锁定') with file(locked_file,'a') as deny_f: deny_f.write('\n'+username) def main(): retry_count=0 retry_limit=3 #循环次数 while retry_count<retry_limit: #用户最多重复登陆3次 username=raw_input('请输入您的用户名:') #引导用户输入用户名 with file(locked_file,'r') as lock_f: #采用with打开方式,将locked_file赋值lock_f,防止忘记f.close()关闭文件 for line in lock_f.readlines(): #循环遍历每一行的内容if len(line)==0: #对每一行内容进行处理 continueif username == line.strip(): #利用.strip这个函数去掉换行符,来对username进行匹配。 sys.exit('用户已经被锁定!') if len(username)==0: #提示用户登录时,用户名不能为空! print('用户名不能为空,请重新输入') continue password= raw_input('请输入您的密码:') #引导用户输入密码 with file(account_file,'r') as account_f: flag= Falsefor line in account_f.readlines():user,pawd=line.strip().split() #将用户名和对应密码进行处理if username==user and password==pawd: #判断用户名和密码 print('success!') flag=True break #退出for循环 if flag==False: #避免用户在三次输入后,依然提示重新输入。 if retry_count<2:print('您输入的用户名或密码有误,请重新输入!')retry_count+=1 else: print('欢迎用户登陆成功!!') break # 加标志位是为了用户能够成功推出整个循环! deny_account(username) #对应上面的def函数把锁定账号加入文档中去 if __name__ == '__main__': main()你找个工具将这个接口API,自动转换成python版本的就可以了。好象是SWIG和Boost。 这两个以前看过,偶尔还试过几次。之所以建议你用自动工具,就是因为python对于C 扩展麻烦些,对于C语言接口可以使用ctypes和cython简单解决。不过C 如果用这些方法有时候被很麻烦。boost在linux里会经常用到,在windows下也可以使用。SWIG在一般的教程里都会提及到。SIP也是最近出名的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)