先看下面一段代码:
代码语言:javascript复制print('hello world')
print(111)
通过上面代码的运行,我们可以发现python的程序代码是自上而下运行的 当我们想将输出顺序改变的话,就需要用到条件控制语句
条件控制语句
1.条件判断 if语句
语法:
if 条件表达式 : 代码块
- 请参看以下代码:
if False:print('Hello')
结果为什么都不输出
代码语言:javascript复制if True:print('Hello')
结果为 Hello 通过以上代码我们可以分析出:
执行流程:
if语句在执行时,会先对条件表达式进行求值判断, 如果为True,则执行if后的语句 如果为False,则不执行
什么是代码块?
代码块当中保存着一组代码,同一个代码块中的代码,要么都执行要么都不执行。 简单来说代码块就是一种为代码分组的机制
2.input()函数
input()函数接受一个标准输入数据,返回为 string 类型。 input() 也可以用于阻止程序结束
需求:获取用户输入的用户名,当用户名是 admin时显示欢迎访问 实现代码:
代码语言:javascript复制uname=input("请输入用户名:")
if uname == 'admin':
print('welcom',uname)
3. if--else语句
语法:
if 条件表达式 : 代码块 else : 代码块
执行流程:
if-else语句在执行时,先对if后的条件表达式进行求值判断 如果为True,则执行if后的代码块 如果为False,则执行else后的代码块 上面的代码我们加入esle语句
代码语言:javascript复制uname=input("请输入用户名:")
if uname == 'admin':
print('welcom',uname)
else:
print('输入有误,不是合法的用户')
再看一下个需求: 让用户输入一个工资,当大于2000时,执行一句语句,当不小于2000时执行一条语句 代码实现:
代码语言:javascript复制salary = int(input('请输入您的工资:')) #由于input接收的都字符串类型的,所以我们需要将接收的内容强转为 int数据类型
if salary>=2000:
print('这个薪水勉强可以养活你了')
else:
print('要饿死了,得加油哦!')
4. if----elif--else语句
可以满足多种条件
语法: if 条件表达式 : 代码块 elif 条件表达式 : 代码块 elif 条件表达式 : 代码块 elif 条件表达式 : 代码块 else : 代码块
执行流程:
if-elif-else语句在执行时,会自上向下依次对条件表达式进行求值判断, 如果表达式的结果为True,则执行当前代码块,然后语句结束 如果表达式的结果为False,则继续向下判断,直到找到True为止 如果所有的表达式都是False,则执行else后的代码块 if-elif-else中只会有一个代码块会执行
我们先看一段代码:
代码语言:javascript复制value=10000
if value >= 30000:
print('有钱就是任性')
elif value >= 20000:
print('有钱真好')
elif value >= 10000:
print('哥也是月薪上万')
elif value >= 5000:
print('工资还说的过去')
elif value >= 2000:
print('可以养活自己了')
else:
print('你该加油了')
以上输出结果为当条件满足时输出相应的结果
我们再看一段代码:
代码语言:javascript复制value = 7000
if value >= 2000:
print('能养活自己了')
elif value >=5000:
print('还说得过去')
elif value >= 10000:
print('哥也是过万的人了')
代码语言:javascript复制结论:以上代码通过改变value的值输出的结果都为 “能养活自己了”,我们分析得出当条件是自小往大的顺序执行的话, 不管value值如何变化,程序始终是按满足第一个条件时进行输出(也就是死代码),所以我们为了让程序执行的更加准确需要在条件上加上相应范围,我们再看调整后的代码:
value = 20000
if value >= 2000 and value < 5000:
print('能养活自己了')
elif value >= 5000 and value < 10000:
print('工资还说的过去')
elif value >= 10000:
print('哥也是月薪上万')
此时我们通过运行程序,改变value的值就会根据不同的条件得到不同的输出结果,不至于像第一种情况,永远只输出满足第一个条件结果,所以以后的程序代码编写中要特别注意(不要写死代码)
5. if语句练习
练习1:根据指定的月份打印该月份所属的季节
经过分析我们的代码如下:
代码语言:javascript复制month =int(input('请输入月份')) #让用户输入月分信息
#我们假定 3,4,5为春季,6,7,8为夏季,9,10,11 为秋季,12,1,2为冬季,月份中不能小于1和大于12,当输入小于1或大于12的时候,我们提示用户输入有误
if month < 1 or month >12:
print('输入的月份不存在,你不知道一年有多少个月吗?')
elif 3 <= month <= 5: #月份在3-5月
print(month,'月份是春季,春暖花开,你可以浪了')
elif 6 <= month <= 8: #月份在6-8月
print(month,'月份是夏季,地表升温,空调续命')
elif 9 <= month <= 11: # 月份在9-11月
print(month, '月份是秋季,收获的季节,快去看看你的爱情收获了没')
else: # 此时月份在12-次年2月
print(month, '月份是冬季,被子不让我起床,继续养膘!')
练习2:根据用户输入的数字判断是奇数还是偶数
经过分析我们的代码如下:
代码语言:javascript复制num = int(input('请输入1-100的数字:')) #接收用户输入的数字
if num % 2 == 0: #通过 % 模运算符,求最后的余数,余数为0 说明是偶数,否则为 奇数
print(num,'是偶数')
else:
print(num,'是奇数')
练习3:根据用户输入的年份判断是否是闰年
经过分析我们的代码如下:
代码语言:javascript复制year = int(input('请输入年份:')) #闰年成立的条件 一般的,能被4整除的年份是闰年不能被100整除,不能被4整除的年份是平年或者可以被400整除的也是闰年 二月有29天就是闰年 28天就是平年
if (year % 4== 0 and year % 100 != 0) or year % 400 == 0:
print(year,'年是闰年')
else:
print(year,'年是平年')
练习4:根据用户输入的狗狗的年龄得出相当于人的多少岁
假设:狗狗的前2年,第一年相当 于人的10.5岁,往后每一年相当于4岁计算 经过分析我们的代码如下:
代码语言:javascript复制dog_age = float(input('请输入狗狗的年龄:')) #输入狗狗的年龄
p_age=0
if dog_age < 1 or dog_age >20:
print('输入有误')
elif 1 < dog_age <=2:
p_age *=10.5
elif 2 < dog_age <=20:
p_age =21 (dog_age-2)*4
print('狗狗的年龄是{}岁,相当于人{}岁的年龄'.format(dog_age,p_age))
6. while循环语句
循环语句:
可以指定代码块重置指定次数 分为两种 while 循环 for 循环
while循环
语法: while 条件表达式 : 代码块 else: 代码块 执行流程:
while语句在执行时,会先对while后的条件表达式进行求值判断, 如果判断结果为True,则执行循环体(代码块), 循环体执行完毕,继续对条件表达式进行求值判断,以此类推, 直到判断结果为False,则循环终止
死循环:
代码语言:javascript复制while True: #只有特定场景才用,特别消耗资源
print(1)
分析下面的代码;
代码语言:javascript复制i=0 #第一个条件是初始化表达式,定义一个变量
while i < 20: #第二个条件是 条件表达式,用来设置执行循环的条件
print(i)
i = 1 # 第三个条件,更新表达式,修改初始化变量的值
代码语言:javascript复制输出结果 0--19
i=0 #第一个条件是初始化表达式,定义一个变量
while i < 20: #第二个条件是 条件表达式,用来设置执行循环的条件
i = 1 # 第三个条件,更新表达式,修改初始化变量的值
print(i)
输出结果 1-20
我们将 i =1 换一下位置
注:特别注意,当上述代码中的第三个条件,位置在输出语句前和输出语句后时,最终的输出结果会发生变化
6. 1 while循环语句练习1
求100以内的偶数之和 分析后代码如下:
代码语言:javascript复制#第一种方法:
# sum=0
# i = 0
# while i<=100:
# if i % 2 == 0:
# sum = i
# i = 1
# print(sum)
#第二种方法:
sum=0
i = 0
while i<100:
i =2
if i % 2 == 0:
sum = i
print(sum)
以上2个方法,我们可以看出,当条件先更新和后更新时,我们的while条件也是不同的
6. 1 while循环语句练习2
求出100以内的所有6的倍数,以及个数
代码语言:javascript复制#第一种方法:
i = 6
count = 0
while i<100:
if i % 6 == 0:
count =1
print(i)
i =6
print('总数为{}'.format(count))
结果为 6,12 总数为 16