day1_17-9-3
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day1_17-9-3相关的知识,希望对你有一定的参考价值。
一、应用练习
1.需求练习
编写登陆接口
要求:
- 让用户输入用户名密码
- 认证成功后显示欢迎信息
- 输错三次后退出程序
#!/usr/bin/env python #coding:utf-8 time=0 data={ ‘zhangsan‘:{‘ps‘:‘zs123‘}, ‘lisi‘:{‘ps‘:‘ls123‘}, } while time < 3: name = input(‘请输入姓名:‘) if not name in data: print(‘无此用户‘) continue password = input(‘请输入您的密码:‘) if password == data[name][‘ps‘]: print(‘Log in successfully‘) else: print(‘用户名或密码错误‘) time+=1 else: print(‘超过最大次数‘)
升级需求
- 可以支持多个用户登录
- 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态
#存储用户 data={ ‘zhangsan‘:{‘ps‘:‘zs123‘}, ‘lisi‘:{‘ps‘:‘ls123‘} } #打开同目录下名字为user的文件(只读), #把读到的内容给变量 #正查关闭文件 us1=open(‘user‘,‘r‘) name=us1.read() us1.close() time=0 while time < 3: user=input(‘your name >>> ‘) if not user:continue if user in name : print(‘The account!‘) break #输入的名字等于在文件里读取到的内容则告诉用户为锁定状态,并推出循环。 elif not user in data: print(‘Without this user\\n‘) continue #如果输入的名字不等于已知的用户名,告诉用户后跳出本次循环。 else: passwod = input(‘password >>> ‘) if passwod == data[user][‘ps‘]: print(‘Log in successfully‘) exit() #如果密码对的话,正常登陆后退出脚本 else: print(‘User name or password error!\\n‘) time+=1 #密码输入错误,告诉用户并重新输入用户名密码,纪录次数 else: print(‘超过最大次数,请联系管理员‘) record=open(‘user‘,‘a‘) record.write(‘%s\\n‘%user) record.close() exit() #达到三次后告诉用户并打开user文件追加已经输入3次的用户名后正常关闭文件。
2.日常练习
简述编译性与解释型语言的区别,且分别列出你知道的那些语言属于编译型,哪些属于解释型?
编译型语言为一次行读入所有内容,一次性执行所有内容 优点:执行速度快,等同条件下对系统要求较低 缺点:不方便代码测试、排错,调试不方便 编译型语言包括:C/C++、Pascal/Object Pascal(Delphi) 解释型语言为逐行翻译行,一行一行执行 优点:方便代码的调试,及时发现问题及时解决 缺点:执行速度相对编译性语言慢 解释型语言包括:python、Java、C#、javascript、VBScript、Perl、Ruby、MATLAB
执行 Python 脚本的两种方式是什么?
shell模式运行适合脚本中某段代码的调试;利用解释器运行,python的功能最全,官方推荐。
Pyhton 单行注释和多行注释分别用什么?
单行注释用"#",多行注释用三引好"‘‘‘"或四引号""""""
布尔值分别有什么?
True和False,真或假
声明变量注意事项有那些?
1、变量名职能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头。例:1_agent是错误的方式,应该写为 agent_1。 2、变量名不能包含空格,但可使用下划线来分割其中的单词。例:installed apps 这样会引起错误,正确的方式为installed_apps。 3、Python关键字喝函数名不能用做变量,即不可以使用Python保留用于特殊用途的单词。 4、慎用小写字母l喝大写字母O,可能被人错看成数字1和0。 5、变量名应既简短又具有描述性。
如何查看变量在内存中的地址?
print(id(x))
3.代码练习
实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败!
name=‘seven‘ ps=123 user=input(‘输入用户名: ‘) password=input(‘输入密码: ‘) #print(type(ps),type(password)) if user==name and int(password)==ps: print(‘登陆成功‘) else: print(‘登陆失败‘)
实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次。
name=‘seven‘ ps=123 time=0 while time < 3: user = input(‘输入用户名: ‘) password = input(‘输入密码: ‘) if user==name and int(password)==ps: print(‘登陆成功‘) else: print(‘登陆失败‘) time+=1
实现用户输入用户名和密码,当用户名为 seven 或 alex 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次。
data={ ‘seven‘:{‘ps‘:‘123‘}, ‘alex‘:{‘ps‘:‘123‘} } time=0 while time < 3: user = input(‘输入用户名: ‘) password= input(‘输入密码: ‘) if user in data and password==data[user][‘ps‘]: print(‘登陆成功‘) else: print(‘登陆失败‘) time+=1
使用while循环实现输出2-3+4-5+6...+100 的和。
i=2 n=0 while i <=100: if i%2==0: n+=i else: n-=i i+=1 print(n)
使用 while 循环实现输出 1,2,3,4,5, 7,8,9, 11,12;使用 while 循环实现输出 1-100 内的所有奇数;使用 while 循环实现输出 1-100 内的所有偶数。
#while循环固定数 i=1 while i<13: if i==6 or i==10: i+=1 continue print(i) i+=1 #while循环奇数 i=1 while i<=100: if i%2==1: print(i) i+=1 #while循环偶数 i=1 while i<=100: if i%2==0: print(i) i+=1
现有如下两个变量,请简述 n1 和 n2 是什么关系?
n1 = 123456
n2 = n1
公用一个内存(id号想等)的两个变量 print(id(n1),id(n2))
二、格式化输出练习
要求:
练习:用户输入姓名、年龄、工作、爱好 ,然后打印成以下格式 ------------ info of Egon ----------- Name : Egon Age : 22 Sex : male Job : Teacher ------------- end -----------------
代码:
#!/usr/bin/env python
# coding:utf-8
name=input(‘your name >>> ‘) age=input(‘your age >>> ‘) sex=input(‘your sex >>> ‘) job=input(‘your job >>> ‘) print(‘------------ info of Egon -----------\\n‘ ‘name\\t: %s\\n‘ ‘age \\t: %s\\n‘ ‘sex \\t: %s\\n‘ ‘job \\t: %s\\n‘ ‘------------- end -----------------‘ % (name, age, sex, job))
效果:
三、while循环练习
3.1 while循环嵌套等练习:
#要求如下 1 循环验证用户输入的用户名与密码 2 认证通过后,运行用户重复执行命令 3 当用户输入命令为quit时,则退出整个程序
代码:
#!/usr/bin/env python
# coding:utf-8
data={
‘zhangsan‘:{‘ps‘:‘zs123‘},
‘lisi‘:{‘ps‘:‘ls123‘}
}
cond=True
while cond:
name=input(‘your name >>> ‘)
if not name in data:
print(‘Incorrect account entry!\\n‘)
continue
passwod=input(‘your password >>> ‘)
if passwod==data[name][‘ps‘]:
print(‘Log in successfully\\n‘)
while cond:
cmd=input(‘shell # ‘)
if not cmd:continue
if cmd==‘quit‘:
cond=False
continue
else:
print(cmd)
else:
print(‘User name or password error!\\n‘)
效果:
3.2 循环练习
3.2.1、使用while循环输出1 2 3 4 5 6 8 9 10 。
num=1 while num < 11: if num == 7: num+=1 continue print(num) num+=1
3.2.2、求1-100的所有数的和。
a=1 i=0 while a <= 100 : i+=a # i=i+a a+=1 print(i)
3.2.3、输出 1-100 内的所有奇数;输出 1-100 内的所有偶数。
#奇数 num=0 while num < 101: if num % 2 == 1: print(num) num+=1 # 偶数 num=0 while num < 101: if num % 2 == 0: print(num) num+=1
3.2.4、求1-2+3-4+5 ... 99的所有数的和。
#while循环 num=0 i=0 while i < 100: if i%2==0: num-=i else: num+=i i+=1 print(num) #For num=0 for i in range(100): if i % 2 == 0: num = num - i else: num = num + i print(num) ### rslt=0 for n in range(1,100): rslt += n*(-1,1)[n&1] print(rslt)
3.2.5、用户登陆(三次机会重试)。
data={ ‘zhangsan‘:{‘ps‘:‘zs123‘}, ‘lisi‘:{‘ps‘:‘ls123‘} } time=0 while time<3: name = input(‘your name >>> ‘) if not name in data: print(‘没有此用户\\n‘) continue passwd = input(‘your password >>> if passwd == data[name][‘ps‘]: print(‘登陆成功!‘) exit() else: print(‘用户名或密码错误!\\n‘) time+=1 else: print(‘超出最大登陆次数‘)
3.2.6、猜年龄游戏
要求:
允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出。
age=36 i=0 while i<3: user_age=input(‘Please guess the age > ‘) #print(type(age),type(user_age)) if user_age == str(age): print("That‘s right. That‘s good!") exit() else: print(‘Guess wrong!‘) i+=1
升级版本要求:
允许用户最多尝试3次
每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序。
如何猜对了,就直接退出。
age=36 i=0 while i<3: user_age=input(‘Please guess the age > ‘) #print(type(age),type(user_age)) if user_age == str(age): print("That‘s right. That‘s good!") exit() else: print(‘Guess wrong!‘) i+=1 if i == 3: con=input(‘是否继续?继续输入"y"‘) if con ==(‘y‘or‘Y‘): i = 0 continue else: print(‘坚持才会胜利,拜~‘) continue
以上是关于day1_17-9-3的主要内容,如果未能解决你的问题,请参考以下文章