博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python day1_17-9-3
阅读量:6120 次
发布时间:2019-06-21

本文共 9454 字,大约阅读时间需要 31 分钟。

一、应用练习

1.需求练习

编写登陆接口

要求:

  • 让用户输入用户名密码
  • 认证成功后显示欢迎信息
  • 输错三次后退出程序
#!/usr/bin/env python#coding:utf-8time=0data={    '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+=1else: print('超过最大次数')
代码

 

升级需求 

  • 可以支持多个用户登录 
  • 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态
#存储用户data={    'zhangsan':{
'ps':'zs123'}, 'lisi':{
'ps':'ls123'}}#打开同目录下名字为user的文件(只读),#把读到的内容给变量#正查关闭文件us1=open('user','r')name=us1.read()us1.close()time=0while 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次的用户名后正常关闭文件。
代码

 流程图如下:

修改上面代码的BUG

data={    'zhangsan':{
'ps':'zs123','count':0}, 'lisi':{
'ps':'ls123','count':0}}#打开同目录下名字为user的文件(只读),#把读到的内容给变量#正查关闭文件us1=open('user','r')name=us1.read()us1.close()time=0while time < 6: 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('your password >>> ') if passwod == data[user]['ps']: print('Log in successfully') exit() #如果密码对的话,正常登陆后退出脚本 else: data[user]['count']+=1 print('User name or password error!\n') if data[user]['count']==3: print('超过最大次数,请联系管理员') record = open('user', 'a') record.write('%s\t' % user) record.close() exit() time+=1
代码

 

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=123user=input('输入用户名: ')password=input('输入密码: ')#print(type(ps),type(password))if user==name and int(password)==ps:    print('登陆成功')else:    print('登陆失败')
代码

 

实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次。

name='seven'ps=123time=0while 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=0while 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=2n=0while i <=100:    if i%2==0:        n+=i    else:        n-=i    i+=1    print(n)
代码 while实现

 

使用 while 循环实现输出 1,2,3,4,5, 7,8,9, 11,12;使用 while 循环实现输出 1-100 内的所有奇数;使用 while 循环实现输出 1-100 内的所有偶数。

#while循环固定数i=1while i<13:    if i==6 or i==10:        i+=1        continue    print(i)    i+=1#while循环奇数i=1while i<=100:    if i%2==1:        print(i)    i+=1#while循环偶数i=1while 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  : EgonAge   : 22Sex   : maleJob   : Teacher ------------- end -----------------
练习1

代码:

#!/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时,则退出整个程序
练习1

代码:

#!/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
代码

 

转载于:https://www.cnblogs.com/tiancc/p/7489749.html

你可能感兴趣的文章
Windows phone 8 学习笔记(3) 通信
查看>>
重新想象 Windows 8 Store Apps (18) - 绘图: Shape, Path, Stroke, Brush
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
深入浅出NodeJS——数据通信,NET模块运行机制
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>
Android扩展 - 拍照篇(Camera)
查看>>
JAVA数组的定义及用法
查看>>