之前在博客园里面写了一篇,地址http://www.cnblogs.com/yutianaiqingtian-sky/,但是在51cto里面混的比较久,所以还是想在51cto里面写出来,本次Python的学习主要是以alex的教程为主,然后希望一步一步的持之以恒的学下去,为入学做准备。这次主要是为了完成一个作业:
作业二:编写登陆接口
输入用户名密码
认证成功后显示欢迎信息
输错三次后锁定
按照想法是先写出流程图然后编写自己的算法,但是实际上确有一些出路,虽然画流程图没有画很多的时间,但是最后编写出的代码还是有点出路。虽然写流程图对写程序是个思路的指引,但是确实没有养成写出流程图就知道该怎么一步一步写出代码的能力(5555555555555),代码和流程图如下:
# script name: # function:写一个用户登入程序,如果用户输入三次之后输入错误则锁定用户登入 # Author:zhangjinghui # date:2016.7.17 user_select = int(input("登入 or 注册:1.登入 2.注册 3.退出")) while user_select == 1 or user_select == 2 or user_select == 3: if user_select == 1: user_name = input("您账户的用户名:") user_password = input("您的密码:") f = open("user_info.dat", "r") f_name = str(f.readlines(1)) #将文件中第一行的数据转换为用户易读的形式 f_cnt = str(f.readlines(2)) cnt = int(f_cnt[8:-4]) #记录着每次的错误次数 f_password = str(f.readlines(3)) if f_name[7:-4] != user_name: print("你输入的用户不存在...请重新输入...") elif cnt >= 3: print("你之前输入的错误次数过多,用户已被锁定....") else: while f_password[12:-4] != user_password: if cnt >= 3: print("你输入的错误次数过多,用户已被锁定...") f_name_temp = f_name[7:-4] f_password_temp = f_password[12:-4] f.close() # 先关闭下文件,然后以只写形式打开 f = open("user_info.dat", "w") f.write(‘name:{0}\ncount:{1}\npass_word:{2}\n‘.format(f_name_temp, str(cnt), f_password_temp)) f.close() break else: cnt += 1 print("输入错误,你还有{}次机会".format(3 - cnt)) user_password = input("再次输入您的密码:") if f_password[12:-4] == user_password and cnt < 3: print("成功登入...welcome to login...") f.close() user_select = int(input("是否继续:1.登入 2.注册 3.退出")) elif user_select == 2: reg_name = input("输入你的注册用户名:") reg_password1 = input("第1次输入你的账户密码:") reg_password2 = input("第2次输入你的账户密码:") if reg_password1 != reg_password2: print("两次输入密码不匹配...") else: cnt = 0 f = open("user_info.dat", "w") f.write(‘name:{0}\ncount:{1}\npass_word:{2}\n‘.format(reg_name, cnt, reg_password1)) f.close() user_select = int(input("是否继续:1.登入 2.注册 3.退出")) elif user_select == 3: exit() else: print("请重1或2中选择....") user_select= int(input("是否继续:1.登入 2.注册 3.退出"))
平时编写的代码量还是少了一些,平时看着很简单的一个东西,但是实际实现上还是出现了很多的叉子。按照题目的要求需要进行一些文件的输出输入操作。代码编写还有很多的不足,但是也收获了一些,可以总结如下:(参考知识来源http://www.runoob.com/python3/python3-inputoutput.html)
1、输入和输出操作
现在编程来说,大多数就是需要使用print()函数对字符串的操作,而针对字符串有两个函数str()和repr()。有稍微的区别
str(): 函数返回一个用户易读的表达形式。
repr(): 产生一个解释器易读的表达形式
同时现在更多是去适应去使用str.format()形式的格式化输出,可以认为其中是将.format()中的字符替换str中的{}的位置,其中对于格式的调整还有str.rjust(width, fillchar),顾名思义就是,将str靠右对齐,调整为长度width大小的字符,对于不足的部分用fillchar里面的内容填充。类似的有str.ljust()和str.center()。还有很多其他的,需要后面继续学习学习挖掘。
2、针对文件的输入和输出
现在接触的部分稍微简单了写,单纯的f.read()、f.write()、f.readline()、f.readlines()。f.read()表示直接提取出整个文件的所有内容;f.readline()表示从文件中读取一行;f.readlines()也是按照行为单位提取出整个文件的内容。f.readline()和f.readlines()常常会配合 for line in f.readlines()。
3、书写规范
写程序写到一半发现编译器的右边一堆横线(提示书写有错误或者不规范),提示最多的就是,在操作符的两边应该增加空格..今后需要好好养成一个写代码的好习惯
本文出自 “独家雨天” 博客,请务必保留此出处http://520sky.blog.51cto.com/9188727/1827570
原文地址:http://520sky.blog.51cto.com/9188727/1827570