判断语句
判断的定义
- 如果 条件满足,才能做某件事情,
- 如果 条件不满足,就做另外一件事情,或者什么也不做
正是因为有了判断,才使得程序世界丰富多彩,充满变化!
判断语句 又被称为 “分支语句”,正是因为有了判断,才让程序有了很多的分支
if语句
if语法结构(4空格缩进)
if expression:
if_suite
else:
else_suite
如果表达式的值 非0 或者为布尔值 True,则代码组 if_suite 被执行;否则就去执行 else_suite。
[root@python day02]# cat demo01_if.py
if 15<18:
print('未成年人禁止入内')
else:
print('允许入内')
[root@python day02]# python3 demo01_if.py
未成年人禁止入内
[root@python day02]# cat demo01_if.py
if 25<18:
print('未成年人禁止入内')
else:
print('允许入内')
[root@python day02]# python3 demo01_if.py
允许入内
if语句示例:
只要表达式数字为 非零值 即为 True; 空字符串、空列表的值均为 False
[root@python day02]# vim demo01_if.py
#列表
#[] -> False
#列表只要有内容就不是空列表
if []:
print('list ok')
else:
print('list no')
#字符串作为条件
#'' 空字符串 False
if 'hello':
print('str 0k~')
else:
print('str no~')
#数字作为条件
#除0以外都是True,只有0是Flase
if 1:
print('1 ok')
else:
print('1 no')
[root@python day02]# python3 demo01_if.py
list no
str 0k~
1 ok
None为假,取反为真(not None);
[root@python day02]# vim demo01_if.py
#None 和 Null类似
#None -> False
if None:
print('None ok~')
else:
print('None no~')
[root@python day02]# python3 demo01_if.py
None no~
if语句练习 :提示用户输入用户名和密码,如果用户名为bob,密码为123456,则输出Login successful,反之输出Login incorrect
[root@python day02]# cat test01_if.py
#提示用户输入用户名和密码
#如果用户名为bob,密码为123456,则输出Login successful,反之输出Login incorrect
username=input('username:')
password=input('password:')
if username == 'bob' and password == '123456':
print('Login successful')
else:
print('Login incorrect')
[root@python day02]# python3 test01_if.py
username:www
password:qqqq
Login incorrect
[root@python day02]# python3 test01_if.py
username:bob
password:123456
Login successful
扩展+if语句
if扩展语句语法结构(多分支)
if expression:
if_suite
elif expression2:
elif_suite
else:
else_suite
例子:编写判断成绩的程序
如果成绩大于60分,输出“及格”
如果成绩大于70分,输出“良”
如果成绩大于80分,输出“好”
如果成绩大于90分,输出“优秀”
否则输出“你要努力了”
[root@python day02]# cat test02_elif.py
score = int (input('请输入你的成绩:'))
#如果没有在0~100之间
if score < 0 or score >100:
print("成绩格式错误")
elif score >= 90:
print('优秀')
elif score >=80:
print('良')
elif score >=70:
print('好')
elif score >=60:
print('及格')
else:
print('继续努力')
[root@python day02]# python3 test02_elif.py
请输入你的成绩:-1
成绩格式错误
[root@python day02]# python3 test02_elif.py
请输入你的成绩:90
优秀
while循环详解(未知循环次数)
在程序开发中,一共有三种流程方式:
- 顺序 —— 从上向下,顺序执行代码
- 分支 —— 根据条件判断,决定执行代码的 分支
- 循环 —— 让 特定代码 重复 执行
循环概述
- 一组被重复执行的语句称之为 循环体,能否继续重复,决定循环的终止条件
- Python 中的循环中 while 循环和 for 循环
- 循环 次数未知 的情况下,建议采用 while 循环
- 循环 次数可以预知 的情况下,建议采用 for 循环
何时使用
- 减少重复性代码,提高代码效率
while循环语法结构:
while expression:
while_suite
例子:计算1-100之间所有整数的和
[root@python day02]# vim demo_while.py
#计算1-100之间所有整数的和
i=1
sum=0
while i<=100:
sum=sum+i
i +=1
print(sum)
[root@python day02]# python3 demo_while.py
5050
break、continue 和 else
break
和continue
是专门在循环中使用的关键字
break
某一条件满足时,退出循环,不再执行后续重复的代码continue
某一条件满足时,跳过当前循环,不执行 continue 后续重复的代码
break
和continue
只针对 当前所在循环 有效
break
- 在循环过程中,如果 某一个条件满足后,不 再希望 循环继续执行,可以使用
break
退出循环
continue
- 当遇到 continue 语句时,程序会 跳过当前循环,并忽略剩余的语句,然后 回到循环的顶端
- 如果仍然满足循环条件,循环体内语句继续执行,否则退出循环
else
- python 中的 while 语句也支持 else 子句
- else 子句只在循环完成后执行
- break 语句也会跳过 else 块
[root@python day02]# vim demo_while.py
#计算1-100之间所有整数的和
i=1
sum=0
while i<=100:
if i==2:
#退出循环 break
break
sum=sum+i
i += 1
else:
#当循环正常结束会执行
#当循环没有正常结束不会执行
print('else执行了')
print(sum)
[root@python day02]# python3 demo_while.py
1
[root@python day02]# vim demo_while.py
#计算1-100之间所有整数的和
i=1
sum=0
while i<=100:
if i==2:
#跳过这一次循环,还需继续下一次循环
i += 1
#continue
sum=sum+i
i += 1
else:
#当循环正常结束会执行
#当循环没有正常结束不会执行
print('else执行了')
print(sum)
[root@python day02]# python3 demo_while.py
else执行了
5048
练习 :猜数字程序
[root@python day02]# cat test04_while.py
#系统随机生成 100 以内的整数
#要求用户猜生成的数字是多少
#最多猜 5 次,猜对结束程序
#如果5次全部猜错,则输出正确结果
import random
num = random.randint(1,100)
i=1
while i <= 5:
cai =int(input('输入猜取的数字:'))
if cai == num:
break
elif cai < num:
print('猜小了')
elif cai > num:
print('猜大了')
i += 1
else:
print('随机数字:',num)
[root@python day02]# python3 test04_while.py
输入猜取的数字:56
猜大了
输入猜取的数字:23
猜小了
输入猜取的数字:43
猜小了
输入猜取的数字:47
猜大了
输入猜取的数字:45
for 循环详解
for 循环语法结构
for 变量 in 可迭代对象:
for 循环逻辑
for 循环特性
break、continue、else
关键字 | 作用 |
---|---|
break | 结束当前循环 |
continue | 跳出当次循环,继续执行下次循环 |
else | 循环正常结束(非 break 退出),执行 else 逻辑 |
[root@python day02]# cat demo03_for.py
cart = ['巧克力派','鱿鱼丝','碎冰冰','python入门到精通']
#for循环
for item in cart:
print(item)
#列表中存放了多个商品的价格,计算出总价
price = [23,34,67,54,89,32]
sum=0
for item in price:
sum=item+sum
print('总价:',sum)
#循环字符串,获取每个字符
str01 = 'hello world'
for item in str01:
if item == ' ':
continue
#break
print(item)
else:
print('else ok')
range 函数
range 函数是一个内建函数,它的返回值是一个半闭半开范围内的整数。for 循环常与range函数一起使用,range 函数为循环提供条件。
[root@python day02]# cat demo04_range.py
#range() 范围
for item in range(1,11,2):
print(item)
print('\n')
tmp1 = range(5)
for n in tmp1:
print(n)
print('\n')
#转为一个列表
print(list(tmp1))
[root@python day02]# python3 demo04_range.py
1
3
5
7
9
0
1
2
3
4
[0, 1, 2, 3, 4]
练习:斐波那契数列
- 斐波那契数列就是某一个数,总是前两个数之和,比如 0,1,1,2,3,5,8
- 使用for循环和range函数编写一个程序,计算有10个数字的斐波那契数列
- 改进程序,要求用户输入一个数字,可以生成用户需要长度的斐波那契数列
[root@python day02]# cat test05_range.py
fib = [0,1]
for i in range(1,9):
fib.append(fib[-1]+fib[-2])
print(fib)
[root@python day02]# python3 test05_range.py
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
改进后程序:
[root@python day02]# cat test05_range.py
fib = [0,1]
length=int(input('请输入要生成的列表长度:'))
length=length-1
for i in range(1,length):
fib.append(fib[-1]+fib[-2])
print(fib)
[root@python day02]# python3 test05_range.py
请输入要生成的列表长度:15
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377]
[root@python day02]#
列表解析 (列表推导式)
它是一个非常有用、简单、灵活的工具,可以用来动态地创建列表,注意:它只是一个简写方式,不是新知识点
语法结构
[root@python day02]# cat demo05_list.py
list01 = []
for item in range(1,11):
list01.append('hello'+ str(item))
print('输出列表list01:',list01)
list02 = ['hello' for item in range(1,11)]
print('输出列表list02:',list02)
[root@python day02]# python3 demo05_list.py
输出列表list01: ['hello1', 'hello2', 'hello3', 'hello4', 'hello5', 'hello6', 'hello7', 'hello8', 'hello9', 'hello10']
输出列表list02: ['hello', 'hello', 'hello', 'hello', 'hello', 'hello', 'hello', 'hello', 'hello', 'hello']
[root@python day02]#