你的位置:首页 > 操作系统

[操作系统]Python day1_17

一、应用练习

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次的用户名后正常关闭文件。
代码

 流程图如下:

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                      
代码