写在开头,昨天是补全了八种常见数据类型的剩下三种、用户交互、常用运算符,今天主要学习流程控制很重要
昨日作业补充另一种方法:
原理:可以将表格整体看成是一个字符串
先定义出来这个字符串,需要填充的内容全部用%s预留好
info_demo = """
------------ info of %s -------------
Name : %s
Age : %s
Job : %s
---------------- end -----------------
"""
# 然后开始设计用户交互的内容
username = input('username>>>:')
age = input('age>>>:')
job = input('job>>>:')
print(info_demo % (username, username, age, job))
⇧ ⇧
!!!注意,两次username是为了对其 %s的数据个数,必须一致
一、垃圾回收机制
-
何为垃圾数据?:
在计算机内存中没有任何变量命指向的数据,占着空间不用,会被python程序的机制定义为垃圾(注意不同语言垃圾回收机制不一定相等)
-
3个要点
-
引用计数
内存中变量值身上有几个变量名绑定引用计数就是几,只要不为0就不是垃圾
-
标记清除
当内存即将沾满的时候 python会自动暂停程序的执行 从头到尾将内存中数据进行扫描并打上标记 之后一次性清除掉标记的数据
-
分代回收
记住一句就可以,使用次数越频繁的数据,垃圾回收机制越不会经常去监看他。
-
二、流程控制理论
-
首先,做任何事情,都有一个流程,都有一个先后顺序,程序运行也是(正常来说非指定情况下)
-
任何代码执行流程只有三种情况:(注:可以混用)
-
顺序
自上而下,依次运行
-
分支
根据设置的条件,走不同的方向
-
循环
根据条件,反复运行
-
插图理解:
流程控制的必备知识点:
1.python中使用缩进来表示代码的从属关系,同级则是依次执行
(一般推荐四个空格)(windows系统按TAB快捷往后缩进,shift+TAB往前缩进)
2.条件都会被转为布尔值,然后决定后面跟着的子代码要不要执行
3.如果同属于某个代码的多行子代码 必须要保持相同的缩进量
例:
while True:
age = int(input('请输入年龄>>>:'))
if 机会 == 3:
print('您已经猜了三次了,是否继续尝试 Y/N')
choice = input('您的选择:')
4.如果上一行代码的结尾如果是冒号 那么下一行代码必缩进
(注意冒号!一定要是英文状态打的!)
5.print没有拥有子代码的权限
⬇⬇
三、分支结构
-
单单一个if分支结构
根据设置的条件做判断,条件成立后就执行子代码
例: age = 20 if age < 24: print('年轻真好啊')
-
if 与 else 连用
如果if带着的条件成立,就不走else——(同级情况下)
如果if不成立,就走else的子代码 ——(同级情况下)
二者连用时,永远不会同时执行
例: age = 25 if age < 24: print('年轻真好啊') else: print('已经不年轻了')
-
if与elif else 一起连用
elif 的意思是1不成立看2,2不成立看3可以一直跟,二不是else的(是|非)的选择,三者连用,else做收尾
例: age = 25 if age < 18: print('青少年') elif age < 40: print('青年') elif age < 60: print('中年') else: print('老年')
-
if判断的嵌套(很难但是重要)
写的时候一定要注意elif else的对齐目标,决定代码的走向,如果条件太绕很容易出错,初期可以画图来梳理嵌套的流程
例: 路上看到一个小姐姐,如果很漂亮,上去要微信,两种结果 →1.给了 →2.没给,可惜了 给了微信问是去吃饭还是唱歌,两种结果 →1.吃饭 →2.唱歌 如果转过头发现不漂亮,不好意思认错人了 代码实现: is_beautiful = True # 判断的前置条件 is_success = True # 判断的前置条件 if is_beautiful: print('小姐姐能否加个微信') if is_success: choice = input('小姐姐吃饭还是唱歌?') print('choice') else: print('可惜了!') else: print('不好意思认错人了')
四、whlie循环
-
while 条件:
条件成立之后循环执行的子代码块 -
格式:
while+空格+判断条件+:(英文的)+(换行缩进)子代码
-
原理:
先判断条件成立不,成立就执行循环的子代码,子代码执行完后立马回到最初的条件判断处,再次判断,如果成立,继续循环,如果不成立,结束循环体代码,按照同while该行相同缩进格式的后续代码依次执行
-
两个与循环有关的单词
break 打破,打破当层循环
continue 让循环体代码直接回到条件判断处重新判断
代码实现: 1.打印1到10 count = 1 while count < 11: print(count) count += 1 2.打印1到10,如果到6,结束 count = 1 while count < 11: print(count) count += 1 if count > 6: break 3.打印1到10,但是跳过5 count = 1 while count < 11: if count == 5: count += 1 continue print(count) count += 1
-
while 与 else
如果循环体代码没有被人为打断(比如说break,contiue),正常执行完,就会执行else的子代码,否则不执行
count = 1 while count < 11: print(count) count += 1 else: print('嗨害嗨') 执行 count = 1 while count < 11: print(count) count += 1 if count > 6: break else: print('嗨害嗨') 不执行
作业:
1.根据用户输入内容打印其权限
'''
jason --> 超级管理员
tom --> 普通管理员
jack,rain --> 业务主管
其他 --> 普通用户
'''
解答:
username = input('请输入用户名>>>:')
if username == 'jason':
print('超级管理员已登录')
elif username == 'tom':
print('普通管理员已登录')
elif username == 'jack' and 'rain':
print('业务主管已登录')
else:
print('普通用户已登录')
2.编写用户登录程序
要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
eg:black_user_list = ['jason','kevin','tony']
如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义)
eg: oscar 123
解答:
black_user_list = ['jason','kevin','tony']
username = input('请输入用户名>>>:')
password = input('请输入用户密码>>>:')
if username in black_user_list:
print('网络错误,登录失败')
else:
print('登录成功')
3.编写用户登录程序
用户如果登录失败 则只能尝试三次
用户如果登录成功 则直接结束程序
解答:
count = 0
while count < 3:
username = input('请输入用户名>>>:')
password = int(input('请输入密码>>>:'))
if username == 'Jack' and password == 666:
print('欢迎回来,Jack')
break
else:
print('用户或者密码错误,请检查后重新输入')
count += 1
4.猜年龄的游戏
假设用户的真实年龄是18 编写一个猜年龄的游戏 获取用户猜测的年龄
基本要求:可以无限制猜测 每次猜错给出提示(猜大了 猜小了) 猜对则结束程序
拔高练习:每次猜测只有三次机会 一旦用完则提示用户是否继续尝试 用户通过输入n或者y来表示是否继续尝试 如果是y则继续给用户三次猜测机会 否则结束程序
解答:
基本
while True:
age = int(input('请输入年龄>>>:'))
if age > 18:
print('猜大了')
elif age < 18:
print('猜小了')
else:
print('恭喜猜对')
break
拔高
n = 18
count = 0
while count < 3:
guess_age = int(input("请输入猜写年龄>>>:"))
if guess_age > n:
print('猜大了')
elif guess_age < n:
print('猜小了')
elif guess_age == n:
print('恭喜猜对')
break
count += 1
if count >=3:
choice = input('是否继续,继续将获得三次机会!y/n 请输入>>>:')
print(choice)
if choice == 'y':
while count < 6 :
guess2 = int(input('请输入数字>>>:'))
if guess2 > n:
print('还是猜大了')
elif guess2 < n:
print('还是猜小了')
else:
print('太棒了,正确了')
break
count += 1
if count == 5:
print('最后一次机会了!')
if count == 6:
print('没有机会了!!\n游戏结束,感谢游玩')
else :
print('游戏结束,感谢游玩')
break
标签:count,python,流程,day5,else,while,print,input,age
From: https://www.cnblogs.com/wznn125ml/p/16735802.html