条件控制语句
一、条件判断
1. if语句
1.1执行的流程:
- if语句在执行时,会先对条件表达式进行求值判断
- 如果为True,则执行if后的语句
- 如果为False,则不执行
1.2语法
- if 关键字;
- 条件(即求值为true或false的表达式);
- 冒号;
- 代码块。
1.3代码块
- 代码块中保存着一组代码,同一个代码块中的代码,要么都执行要么都不执行
- 代码块以缩进开始,直到代码恢复到之前的缩进级别时结束
- 代码块就是一种为代码分组的机制
2. if-else语句
2.1语法:
2.2执行流程:
- if-else语句在执行时,先对if后的条件表达式进行求值判断
- 如果为True,则执行if后的代码块
- 如果为False,则执行else后的代码块
3.if-elif-else 语句
3.1 语法:
- if 条件表达式 :
- elif 条件表达式 :
- elif 条件表达式 :
3.2执行流程:
- if-elif-else语句在执行时,会自上向下依次对条件表达式进行求值判断;
- 如果表达式的结果为True,则执行当前代码块,剩下的条件语句自动跳过
- 如果表达式的结果为False,则继续向下判断,直到找到True为止
- 如果所有的表达式都是False,则执行else后的代码块
- 总结: if-elif-else中只会有一个代码块会执行
二、作业
1.求1000以内所有的水仙花数。(水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身,例如:13 + 53+ 33 = 153)
1.1 做题思路:
- 生成100-999之间的所有整数;
- 求出整数的百位数、十位数、个位数
- 百位:通过除以100取整
- 十位:除以10取整,再除以10取余
- 个位:除以10取余
- 判断是否符合水仙花数规则
a=100
print('1000以内的水仙花数有:')
while a<1000:
b=a//100
s=(a//10)%10
g=a%10
if a==b**3+s**3+g**3 :
print(a)
a+=1
print('over!')
2.获取用户输入的任意数,判断其是否是质数.
2.1 做题思路
- 利用input()函数获取用户输入;
- 判断用户输入的数是否符合规则,即一个不为0的整数;(isdecimal()函数可以判断字符串是否只由数字构成,且非空)
- 用户输入0或1,直接输出不是质数
- 将类型转换成int;
- 判断是否是质数,即除数只有1和它本身;
while True:
a=input('请输入一个大于0的整数,按q退出程序')
if a=='q' or a=='Q':
break
elif not a.isdecimal():
print('你输入的不是整数')
elif int(a)==0 or int(a)==1:
print(a,'不是质数')
else:
a=int(a)
i=2
while i<a:
if a%i==0:
print(a,'不是质数')
break
i+=1
else:
print(a,'是质数')
print('谢谢使用')
3.猜拳游戏:
- 出拳 玩家:手动输入 电脑:随机输入
- 判断输赢: 玩家获胜 电脑获胜 平局
3.1 做题思路
- 获取用户输入,可以设0代表剪刀,1代表石头,2代表布
- 用random.randint()函数随机生成0,1,2中的一个
- 判断结果
- 显示结果
import random
while True:
a=input('请输入,剪刀,石头or布:(按q结束游戏)\n')
if a=='q' or a=='Q':
break
if a=='剪刀'or a=='石头' or a=='布':
b=random.randint(0,2)
if b==0:
print('电脑出的是剪刀')
elif b==1:
print('电脑出的是石头')
else :
print('电脑出的是布')
if (a=='剪刀' and b==0) or (a=='石头' and b==1) or (a=='布' and b==2):
print('平局')
elif (a=='剪刀' and b==1) or (a=='石头' and b==2) or (a=='布' and b==0):
print('你输了!')
else:
print('你赢了!')
else:
print('输入有误,请重新输入',end='.')
print('欢迎下次再玩!')