-
流程控制if
-
流程控制while
-
流程控制for
-
数据类型int,float
-
数据类型str以及内置方法
if判断
模拟人对某些事物的判断并作出不同的决策的能力
计算机由于要像人一样的去工作,那么它必须也要具备判断事物对错的能力,从而作出不同的响应
实际中的例子,面前走过一个妹纸,你会想好不好看,要不要超过去看看正脸等等
程序中比如ATM取款机,需要接收你输入的用户名和密码来判断你是否是合法用户等等
if 条件:
代码1
代码2
代码3
...
# 代码块(同一缩进级别的代码,例如代码1、代码2和代码3是相同缩进的代码,这三个代码组合在一起就是一个代码块,相同缩进的代码会自上而下的运行)
比如你眼前走过了一个生物,你的大脑会迅速的采集这些信息然后判断是不是女人,年龄在18到24之间,长是否好看等,映射到计算机上就是比对一堆变量
# if
cls = 'human'
gender = 'female'
age = 24
if cls == 'human' and gender == 'female' and age > 28 and age < 28:
print('开始表白')
print('end...')
if…else
if 条件:
代码1
代码2
代码3
...
else:
代码1
代码2
代码3
...
if...else表示if成立代码成立会干什么,else不成立会干什么。
# if...else
cls = 'human'
gender = 'female'
age = 38
if cls == 'human' and gender == 'female' and age > 16 and age < 22:
print('开始表白')
else:
print('阿姨好')
if…elif…else
if 条件1:
代码1
代码2
代码3
...
elif 条件2:
代码1
代码2
代码3
...
elif 条件3:
代码1
代码2
代码3
...
...
else:
代码1
代码2
代码3
...
if...elif...else表示if条件1成立干什么,elif条件2成立干什么,elif条件3成立干什么,elif...否则干什么。
# if...elif...else
cls = 'human'
gender = 'female'
age = 28
if cls == 'human' and gender == 'female' and age > 16 and age < 22:
print('开始表白')
elif cls == 'human' and gender == 'female' and age > 22 and age < 30:
print('考虑下')
else:
print('阿姨好')
练习1:成绩评判
-
如果 成绩>=90,打印"优秀"
-
如果 成绩>=80 并且 成绩<90,打印"良好"
-
如果 成绩>=70 并且 成绩<80,打印"普通"
-
其他情况:打印"差"
# 成绩评判
score = input("your score: ")
score = int(score) # 注意类型转换
if score >= 90:
print('优秀')
# elif score >= 80 and score < 90:
elif score >= 80:
print('良好')
# elif score >= 70 and score < 80:
elif score >= 70:
print('普通')
else:
print('差')
练习2:模拟登录注册
# 模拟登录注册
user_from_db = 'jason'
pwd_from_db = '123'
user_from_inp = input('username: ')
user_from_inp = input('password: ')
if user_from_inp == user_from_db and pwd_from_inp == pwd_from_db:
print('login successful')
else:
print('username or password error')
练习3:上下班
如果:今天是Monday,那么:上班
如果:今天是Tuesday,那么:上班
如果:今天是Wednesday,那么:上班
如果:今天是Thursday,那么:上班
如果:今天是Friday,那么:上班
如果:今天是Saturday,那么:出去浪
如果:今天是Sunday,那么:出去浪
today=input('>>: ')
if today == 'Monday':
print('上班')
elif today == 'Tuesday':
print('上班')
elif today == 'Wednesday':
print('上班')
elif today == 'Thursday':
print('上班')
elif today == 'Friday':
print('上班')
elif today == 'Saturday':
print('出去浪')
elif today == 'Sunday':
print('出去浪')
else:
print('''必须输入其中一种:
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday Sunday
''')
today=input('>>: ')
if today == 'Monday' or today == 'Tuesday' or today == 'Wednesday' or today == 'Thursday' or today == 'Friday':
print('上班')
elif today == 'Saturday' or today == 'Sunday':
print('出去浪')
else:
print('''必须输入其中一种:
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
''')
if嵌套
# if的嵌套
cls = 'human'
gender = 'female'
age = 18
is_success = False
if cls == 'human' and gender == 'female' and age > 16 and age < 22:
print('开始表白')
if is_success:
print('那我们一起走吧...')
else:
print('我逗你玩呢')
else:
print('阿姨好')
while循环
实际生活中类似于重复的做一些事情,流水线上的工人反复劳动,直到下班时间到来
程序中需不需要做重复的事情呢?以刚刚的验证用户名和密码的例子为例,用户无论输入对错,程序都会立马结束,真正不应该是这个样子。。。
while 条件
code 1
code 2
code 3
...
while True:
print('>>>1')
print('>>>2')
print('>>>3')
# 避免死循环
基于while完善校验功能
# 实现ATM的输入密码重新输入的功能
user_db = 'nick'
pwd_db = '123'
while True:
inp_user = input('username: ')
inp_pwd = input('password: ')
if inp_user == user_db and pwd_db == inp_pwd:
print('login successful')
else:
print('username or password error')
小问题:用户输错了确实能够获取重新输,但用户输对了发现还需要输,这我就忍不了
while+break
break的意思是终止掉当前层的循环,执行其他代码。
# break语法演示
while True:
print('1')
print('2')
break
print('3')
# 上面仅仅是演示break用法,实际不可能像我们这样去写,循环结束应该取决于条件
user_db = 'jason'
pwd_db = '123'
while True:
inp_user = input('username: ')
inp_pwd = input('password: ')
if inp_user == user_db and pwd_db == inp_pwd:
print('login successful')
break
else:
print('username or password error')
print('退出了while循环')
while+continue
continue的意思是终止本次循环,直接进入下一次循环
先给我完成一个需求说循环打印出1,2,3,4,5,6,7,8,9
n = 1
while n < 4:
print(n)
n += 1 # 这一行不加又会是死循环
然后需求变一下循环打印1,2,3,4,5,7,8,9,数字6不打印
n = 1
while n < 10:
if n == 6:
n += 1 # 如果注释这一行,则会进入死循环
continue
print(n)
n += 1
ps:continue不能加在最后一步执行的代码,因为代码加上去毫无意义
while True:
if 条件1:
code1
code2
code3
...
continue # 无意义
elif 条件1:
code1
code2
code3
...
continue # 无意义
else:
code1
code2
code3
...
continue # 无意义
while循环嵌套
ATM密码输入成功还需要进行一系列的命令操作,比如取款,比如转账。并且在执行功能结束后会退出命令操作的功能,即在功能出执行输入q会退出输出功能的while循环并且退出ATM程序。
# 退出内层循环的while循环嵌套
user_db = 'jason'
pwd_db = '123'
while True:
inp_user = input('username: ')
inp_pwd = input('password: ')
if inp_user == user_db and pwd_db == inp_pwd:
print('login successful')
while True:
cmd = input('请输入你需要的命令:')
if cmd == 'q':
break
print('%s功能执行'%cmd)
else:
print('username or password error')
print('退出了while循环')
# 退出双层循环的while循环嵌套
user_db = 'jason'
pwd_db = '123'
while True:
inp_user = input('username: ')
inp_pwd = input('password: ')
if inp_user == user_db and pwd_db == inp_pwd:
print('login successful')
while True:
cmd = input('请输入你需要的命令:')
if cmd == 'q':
break
print('%s功能执行'%cmd)
break
else:
print('username or password error')
print('退出了while循环')
上述方法有点low,有多个while循环就要写多个break,有没有一种方法能够帮我解决,只要我退出一层循环其余的各层全都跟着结束>>>:定义标志位
# 退出双层循环的while循环嵌套
user_db = 'jason'
pwd_db = '123'
flag = True
while flag:
inp_user = input('username: ')
inp_pwd = input('password: ')
if inp_user == user_db and pwd_db == inp_pwd:
print('login successful')
while flag:
cmd = input('请输入你需要的命令:')
if cmd == 'q':
flag = False
break
print('%s功能执行'%cmd)
else:
print('username or password error')
print('退出了while循环')
while+else
while+else:else会在while没有被break时才会执行else中的代码。
# while+else
n = 1
while n < 3:
if n == 2:break # 不会走else
print(n)
n += 1
else:
print('else会在while没有被break时才会执行else中的代码')
限制用户登陆错误尝试次数
for循环
现在我想循环去除一个列表里面每一个元素,用while循环如何书写?
name_list = ['jason', 'nick', 'tank', 'sean']
n = 0
while n < len(name_list): # while n < 4:
print(name_list[n])
n += 1
我现在想获取字典里面的多个值,你用while循环还能实现吗?
这个时候就需要使用另外一种循环机制for循环:不依赖于索引取值
for name in name_list:
print(name) # 对比与while更加简便
# 再来看for循环字典会得到什么
info = {'name': 'jason', 'age': 19}
for item in info:
print(item) # 拿到字典所有的key
print(info[item])
# for可以不依赖于索引取指,是一种通用的循环取指方式
# for的循环次数是由被循环对象包含值的个数决定的,而while的循环次数是由条件决定的
for循环也可以按照索引取值
for i in range(1, 10): # range顾头不顾尾
print(i)
# python2与python3中range的区别(cmd窗口演示即可)
# for循环按照索引取值
name_list = ['jason', 'nick', 'tank', 'sean']
# for i in range(0,5): # 5是数的
for i in range(len(name_list)):
print(i, name_list[i])
for+break
跳出本层循环
# for+break
name_list = ['nick', 'jason', 'tank', 'sean']
for name in name_list:
if name == 'jason':
break
print(name)
for+continue
跳出本次循环,进入下一次循环
# for+continue
name_list = ['nick', 'jason', 'tank', 'sean']
for name in name_list:
if name == 'jason':
continue
print(name)
for循环练习题
# 1.打印99乘法口诀表
'''
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
...
9*1=9.................9*9=81
'''
for i in range(1,10): #i=3
for j in range(1,i+1):
print('%s*%s=%s ' %(i,j,i*j),end='') #i=2 j=2
print()
流程控制(补充)
-
pass补充
-
range步长补充
-
打印金字塔
# 2.打印金字塔
''' max_level=5
* current_level=1 空格数=4 星号=1
*** current_level=2 空格数=3 星号=3
***** current_level=3 空格数=2 星号=5
******* current_level=4 空格数=1 星号=7
********* current_level=5 空格数=0 星号=9
'''
max_level=5
for current_level in range(1,max_level+1):
# 先不换行打印打印空格
for x in range(max_level-current_level):
print(' ',end='')
# 再不换行打印*
for y in range(2*current_level - 1):
print('*',end='')
print()