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实现

 

使用 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 ----------------- 练习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 代码

 

相关内容

    暂无相关文章