python开发学习笔记之一(用户登录接口)
第一章 基本语法
第一个程序hello world:
print(‘hello world’)
变量 (Variable;var):
用来把程序运算的中间结果临时存储在内存中,方便后续的调用
<变量名> = <变量内容>
name = 'wilbur0402'
变量名命名规则:
变量名只能是字母、数字、下划线的任意组合
变量名第一个字符不能为数字
关键字不能声明为变量名
变量命名习惯:
驼峰体:单词首字母大写
下划线:单词间用下划线
不建议的命名:
汉字 拼音 词不达意 过长
ps:当一个变量b指向另一个变量a时,实际上是指向那个变量a所指向的内容
a = 1 b = a >>> b = 1 a = 3 >>> b = 1
常量:
不变的量就是常量,约定俗成的,变量名全部大写就是常量
读取用户输入:
input( )函数,输入的内容数据类型默认是字符串
当执行到input()时,等待用户输入内容
注释:
#这是一行注释 ''' 这是多行注释, 用三个单引号。 '''
数据类型:
python解释器可以自动识别输入的数据类型,除非进行强制数据类型转换
ps:type( )返回当前输入的数据类型
基本类型:
数字(number):整型(int)、长整型(long)、浮点型(float)、复数
字符串(string):文本(str)、字节(bytes)
布尔(bool):True、False
数据集:
表(list)、元组(tuple)、字典(dict)、集合(set)
字符串格式化输出:
# %s为占位符 另外还有%d %f
# s = string
# d = digit
# f = float
info = ''' --------- info of %s --------- Name: %s Age: %s Job: %s Hometown: %s ------------- end ------------ '''%(name,name,age,job,hometown)
运算符号:
算数运算:
比较运算:
赋值运算:
逻辑运算:
成员运算:
身份运算:
位运算:
if/elif/else多分支运算:
if 条件: 。。。 elif 条件: 。。。 elif 条件: 。。。 else : 。。。
多分支练习题:
设计匹配成绩程序,成绩分ABCDE五个等级,与分数对应关系如下:
A 90-100
B 80-89
C 60-79
D 40-59
E 0-39
1 mark = int(input('pleaese input your mark:')) 2 3 if mark>100: 4 print('分数不能大于100') 5 6 elif mark >= 90: 7 print('your mark level is A') 8 9 elif mark >= 80: 10 print('your mark level is B') 11 12 elif mark >=60: 13 print('your mark level is C') 14 15 elif mark >=40: 16 print('your mark level is D') 17 18 elif mark >=0: 19 print('your mark level is E') 20 else: 21 print('分数不能是负数') 22
while循环:
while 条件: 执行代码。。。
循环练习:
#循环打印1-100 count = 0 while count <= 100: print('loop',count) count += 1 print('------loop end---------')
#只打印偶数 count = 0 while count <= 100: if count%2 == 0: print('loop',count) count += 1 print('------loop end---------')
#不打印50,在60-80时打印平方 count = 0 while count <= 100: if count == 50: pass elif count >= 60 and count <=80: print(count*count) else: print('loop',count) count += 1 print('------loop end---------')
死循环:
while True: 执行代码
循环终止:
break / continue
break:完全终止循环
continue: 终止本次循环
1 #猜年龄 2 age = 21 3 count = 0 4 while count <3: 5 guess = int(input('your guess:')) 6 count += 1 7 if guess < 0: 8 print('输入错误!') 9 elif guess > age: 10 print('猜得太大了!') 11 elif guess < age: 12 print('猜得太小了!') 13 else: 14 print('猜对了!') 15 break 16 if count == 3: 17 ctn = input('想继续吗?(Y/N)') 18 if ctn =='Y': 19 count=0
while...else语句:
当while正常执行完,就会执行else语句
(当while非正常执行,就不会执行else语句)
第一次作业是做用户登录接口:
作业要求:
基础需求: 让用户输入用户名密码 认证成功后显示欢迎信息 输错三次后退出程序 升级需求: 可以支持多个用户登录 (提示,通过列表存多个账户信息) 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)
第一次全功能实现的代码:
# author:wilbur0402 userdata = { 'zhangsan':'aaa111', 'lisi':'bbb222', 'wangwu':'ccc333' } count = 0 f = open('黑名单','a+',encoding='utf-8')#打开文件 f.seek(0)#重置文件指针位置 data = f.read() while True: #三次循环体 user = input('please input your username:') ban = user#为黑名单格式化保留裕量 if ban not in data: #确认用户输入不在黑名单内 passwd = input('please input your password:') count += 1 if count < 3: if user in userdata and passwd == userdata[user]: #判断用户输入账号密码是否对应 print('welcome %s back!' % user) break else: print('invalid username or password!') else: #尝试三次输入错误后将用户输入账号写入黑名单并跳出循环 print('you inputed invalid username or password 3 times!') if user in userdata and user not in data: f.write('%s\n'%user) break elif user == '': #过滤空字符输入 print('invalid username!') else: #当用户输入在黑名单内时返回封禁信息 print('your account is banned!') break
这里我并没有用需求中所提示的用列表来保存用户信息,而是使用了字典
总结:
在debug时,遇到了空字符被ban的bug,困惑了好久,经过我的深思熟虑(?),我忘了可以用多分支来解决空字符输入问题。
经过我的测试,可以实现全部功能。
瞎聊几句:
说实话,这个作业我做了不下五次,但是每次都会遇到问题,而且遇到的问题还总是不一样的,让我十分的难受,不过总算在刘伟同学的帮助下,搞定了这些问题。
经过老师的批改,我应该注意一下问题:
缩进标准为四个空格、注释的#应该有一个空格。