练习题:
- 编译型语言:指程序在从源码到运行前必须由编译器编译链接生成成二进制文件才能运行,每次对程序源码的改动都必须重新编译才能生效,由于是直接编译为二进制机器语言文件,所以执行速度很快,运行不依赖编译器,举例:C/C++,delphi
解释型语言:程序在源码到运行前无需编译,对代码修改可以立即生效,由语言对应的解释器对源码实时解释运行,执行速度稍慢,运行依赖与相应的解释器,举例:Python,java,JS,php - 执行Python脚本两种方式:1、直接在终端执行Python 手动输入代码输入一句执行一句;2、预先用文本编辑器写好代码,然后用Python执行,示例设代码写在code.py文件里
直接在终端执行
1 Python code.py
- Python单行注释使用#号,多行注释使用在开始注释行前用3个双引号(”””)标记,注释结束行末尾用3个双引号结束
- 布尔值只有True和False两种
- 声明变量注意点,变量只能由下划线字母和数字组成,且不能以数字开头,变量名不能与Python语法包含的指令重名,变量名最好能表达变量的含义,最好不要使用中文或者汉语拼音做变量
- 可以用id(变量)查看变量在内存中的地址
- i.实现用户输入用户名和密码,当用户名为seven且密码为123时登陆成功
1 username=‘seven‘ 2 password=‘123‘ 3 username_input=input("输入用户名:") 4 password_input=input("输入密码:") 5 if username_input ==username and password_input ==password: 6 print("登陆成功!") 7 else: 8 print("用户名或密码错误!")
ii.在i.基础上增加密码错误次数限制,密码错误超过3次禁止登陆
1 username=‘seven‘ 2 password=‘123‘ 3 count=3 4 while count: 5 username_input=input("输入用户名:") 6 password_input=input("输入密码:") 7 8 if username_input ==username and password_input ==password : 9 print("登陆成功!") 10 break 11 else: 12 count -= 1 13 print("用户名或密码错误!剩余可输入错误错误次数:%d" % count) 14 15 else: 16 print("账号密码输入错误次数超限,禁止登陆")
iii.在ii.基础上增加一个用户名Alex
1 username1=‘seven‘ 2 username2=‘Alex‘ 3 password=‘123‘ 4 count=3 5 while count: 6 username_input=input("输入用户名:") 7 password_input=input("输入密码:") 8 9 if (username_input==username1 or username_input==username2)and password_input==password : 10 print("登陆成功!") 11 break 12 else: 13 count -= 1 14 print("用户名或密码错误!剩余可输入错误错误次数:%d" % count) 15 16 else: 17 print("账号密码输入错误次数超限,禁止登陆")
- a.使用while循环计算2-3+4-5+6...+100的和
1 num = 2 2 sum = 0 3 while num <= 100: 4 if num % 2: 5 sum -= num 6 else: 7 sum += num 8 num += 1 9 print(sum)
b.使用while循环实现输出1,2,3,4,5....,12
1 num =1 2 while num <= 12: 3 print(num) 4 num += 1
c.使用while 实现输出1-100内所有奇数
1 num = 1 2 while num <=100 : 3 if num % 2: 4 print(num) 5 num+=1
d.使用while实现输出1-100所有偶数
1 num = 1 2 while num <=100 : 3 if not num % 2: 4 print(num) 5 num+=1
- 现有如下两个变量,请简述n1和n2的关系
n1 = 123456 n2 = n1
n1和n2是两个变量互不相干,此刻n1和n2的值相等是
作业:
编写登陆接口
基础需求:
- 让用户输入用户名密码
- 认证成功后显示欢迎信息
- 输错三次退出程序
username=‘seven‘ password=‘123‘ count=0 while count<3: username_input=input("输入用户名:") password_input=input("输入密码:") if username_input ==username and password_input ==password : print("欢迎%s!" % username_input) break else: count += 1 print("用户名或密码错误!输入错误次数:%d,若错误次数超过3次将被禁止登陆!" % count) else: print("账号密码输入错误次数超限,禁止登陆") exit()
升级需求:
- 可以支持多用户登陆
- 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态
1 import os 2 3 ban_list=list() #禁止登陆用户列表 4 ban_file_path=‘banned.cfg‘ 5 users=[‘xiaoming‘,‘dawang‘,‘alex‘] 6 passwds={‘xiaoming‘:‘12345‘,‘dawang‘:‘45678‘,‘alex‘:‘abc123‘} 7 fail_count=dict() #存放密码输入错误计数 8 fail_count[‘123‘] =1 9 openmode=‘r‘ 10 if not os.path.exists(ban_file_path): 11 openmode=‘w+‘ 12 ban_file=open(ban_file_path,openmode) 13 try: 14 for line in ban_file : #初始化禁止登陆列表 15 ban_list.append(line) 16 finally: 17 ban_file.close() 18 trycount=0 19 flag = True 20 while flag : 21 22 username=input("输入用户名:") 23 password=input("输入密码:") 24 if ban_list.count(username)>0: 25 print("该账号已经被禁用") 26 exit() 27 elif users.count(username)>0: 28 if passwds[username] ==password : 29 print("欢迎登陆系统,%s!" % username_input) 30 fail_count[username]=0 #成功登陆则系统错误计数清零 31 break 32 else: 33 fail_count[username]=fail_count.get(username, 0)+1 34 trycount += 1 35 print("密码错误!输入错误次数:%d,累计输入错误3次账号将被冻结!" % fail_count[username]) 36 if fail_count[username]>=3 : 37 flag=False 38 else: 39 trycount += 1 40 print("用户名不存在!") 41 if trycount >= 5 : 42 print(‘账号密码输入错误次数超限,软件自动退出!‘) 43 exit() 44 else: 45 print("该账号密码输入错误次数超限,账号被禁止登陆!") 46 ban_file=open(ban_file_path,‘a‘) 47 48 try: 49 ban_file.writelines(username) 50 finally: 51 ban_file.close() 52 exit()