条件语句
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
可以通过下图来简单了解条件语句的执行过程:
[图片上传失败...(image-ef7ddf-1534663959949)]
1. if语句
if 条件语句:
代码块
其他语句
(1)执行过程:先判断条件语句是否为True,若是True就执行代码块,再执行其他语句若是False,就执行其他语句
(2)条件语句:看可以是任何有值的表达式,但一般是布尔值
(3)if是关键字
if False:
print('代码1')
print('代码2') #if为假,不执行缩进内容,直接向下执行
print('代码3') #代码3
练习: 用一个变量来保存时间(50米短跑),如果时间小于8秒,打印及格
time=7
if time<8:
print('及格') #及格 (只有条件成立的时候才执行)
if time>=8:
print('不及格')
print(time) #7 (不管if语句是否成立,都会执行)
2. if---else
if 条件语句:
代码块1
else:
代码块2
其他语句
执行过程:先判断条件语句是否为True,若是True,就执行代码块1,之后再执行其他语句;若条件语句为False,则执行代码块2,之后再执行其他语句
练习: 用一个变量来保存时间(50米短跑),如果时间小于8秒,打印及格,否则打印不及格、
time=10
if time<8:
print('及格')
else:
print('不及格') #不及格
3. if elif... else
Python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else
if 条件语句1:
代码块1
elif 条件语句2:
代码块2
...
else:
代码块n
其他语句
(1)执行过程:先判断条件语句1是否为True,若为True,就执行代码块1,之后再执行其他语句;若条件语句1是False,就判断条件语句2是否为True,若为True,就执行代码块2,再执行其他语句;若条件语句2为False,就执行代码块3,之后直接执行其他代码
[图片上传失败...(image-18d4b3-1534663959949)]
4、if语句可以嵌套使用
if 条件语句1:
if条件语句2:
执行语句块2
else:
执行语句块3
else:
执行语句块4
注意:
<1>每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
<2>使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
例:给一个学生的成绩,判断成绩是优秀(90)、良好(70-89)及格(60-69)、不及格(0-59)
score=101
if 90<=score<=100:
print('优秀')
elif 70<=score<90:
print('良好')
elif 70
练习:给一个整数。如果是偶数,就打印某某某是偶数,如果是偶数并且还能被4整除,打印某某是4的倍数,否则打印某某某奇数
方法1:
num=16
if isinstance(num,int):
print('%d是整数'%(num))
if num%2==0:
print('%d是偶数'%(num))
if num%4==0:
print('%d是4的倍数'%(num))
else:
print('%d是奇数'%(num)) #16是整数 16是偶数 16是4的倍数
方法2:
num=24
if isinstance(num,int):
print('%d是整数'%(num))
if num%2:
print('%d是奇数'%(num))
else:
print('%d是偶数'%(num))
if not(num%4):
print('%d是4的倍数'%(num)) #24是整数 24是偶数 24是4的倍数
5.判断数据的类型
(1)isinstance(值,类型名) --->判断指定的值是否是指定的类型,是True,不是就False
print(isinstance(10.0,int)) #False (判断10.0是否是整型)
6.类型的强制转换
** 数据类型转换:类型名(被转换的数据)int float bool str**
1.其他的数据类型转换成整型:int()
浮点型:只保留整数部分
布尔类型:True--->1 False--->0
字符串:字符串引号里面全是整数数字的(正负都行),才可以转换
print(int(12.9)) #12
print(int(False)) #0
print(int(True)) #1
print(int('-1')) #-1
# print(int('1.01')) 报错
# print(int('2aj')) ValueError: invalid literal for int() with base 10: '2aj'
2.其他数据类型转换成浮点型:float()
整型:在整数后面加 .0
布尔类型:True--->1.0 False--->0.0
字符串:字符串中引号内的数据全是是整型或者浮点型的数据才可以转换成浮点型数据
print(float(1)) #1.0
print(float(True)) #1.0
print(float('100')) #100.0
print(float('100.01')) #100.01
# print(folat('100.1b')) 报错
3、其他类型的数据转换成布尔类型:bool()
任何类型的数据类型都可转换成布尔值
整数中,除了0转换成False,其他都会转成True
总结:所有为0、为空的值会转换成False,其他值都是True
print(bool(0)) #False
print(bool('')) #False
print(bool(' ')) #True
if 0:
print('---')
else:
print('===') #===
练习:判断str1是否是空串?
str1=''
# 方法1:
if str1:
print('不是空串')
else:
print('空串') #空串
# 方法2:
if str1=='':
print('空串')
else:
print('不是空串')
# 方法3:
if len(str1)==0:
print('空串')
else:
print('不是空串') #空串
练习: 判断一个数字是否是0?
num=10
# 方法1:
if num:
print('不是零')
else:
print('是零') #不是零
# 方法2:
if num==0:
print('是零')
else:
print('不是零') #不是零
4.其他类型的数据转换成字符串:str()
任何类型的值都可以转换成字符串
其他数据类型转换成字符串的时候,就直接在数据的外层加引号
print(type(str(120))) #
7. for 循环
需要重复执行某个过程,就可以使用循环,python中的循环有for循环和while
for
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
for 变量名 in 序列:
循环体
(1)for :关键字、
(2)变量名:和声明变量时的变量名的要求是一样的,功能也是存储值
(3)in:关键字 ,在什么里面
(4)序列:容器类型的数据,字符串、列表、字典、元祖等
(5)循环体:会重复执行的代码块
(6)执行的过程:用变量名在容器序列中取值,每次取一个值,每取一次执行一次循环体,直到取完为止
for char in 'ab123':
print(char)
'''
结果:
a
b
1
2
3
···
range函数
(1)xrange是python2.x中函数,在python3.x使用range函数代替了,py3用不了xrange
(2) range功能是产生指定范围的数字序列,一般在for循环中,控制循环次数,或者产生索引值
(3)range(n) :产生0~(n-1)的整数序列
(4)range(m,n):产生m~(n-1)的整数序列
(4)range(m,n,step):从m开始,每次加step产生下一位数字,直到n前一个为止
练习:打印6次'abc'
for i in range(6):
print('aaa')
'''
aaa
aaa
aaa
aaa
aaa
aaa
'''
# rang(10):产生0,1,2,3,4,5,6,7,8,9
for x in range(10):
print(x) #0 1 2 3 4 5 6 7 8 9
# range(10,20):产生数字10~19
for x in range(10,20):
print(x) #10 11 12 13 14 15 16 17 18 19
for x in range(1,10,2):
print(x) #1 3 5 7 9
练习:1+2+3...+100
# 方法1:
sum=0
for i in range(1,101):
sum+=i
print(sum) #5050
# 方法2:
sum=0
for x in range(100):
sum+=x+1
print(sum) #5050
练习:只用一个循环
计算1x2x3...x10
计算2x4x6...x10
num1=1
num2=1
# 遍历取出1-10中所有的数字
for x in range(1,11):
num1*=x
#判断x是否是偶数
if x%2==0:
num2*=x
print(num1) #3628800
print(num2) #3840
练习:有个字符串'abcdef'依次取出字符串中偶数位(下标值是偶数)上的字符
str='abcdef'
# 方法1:
for index in range(len(str)):
if index%2==0:
print(str[index]) #a c e
# 方法2:
# 循环取出字符串所有的偶数下标
for index in range(0,len(str),2):
print(str[index]) #a c e
# 方法3:
index=0
for char in str:
if index%2==0:
print(char)
index+=1 #a c e
8.while循环
while 条件语句:
循环体
其他语句
(1)while:关键字
(2)条件语句:结果是True,或者是False
(3)循环体:重复执行的代码段
(4)执行过程:判断条件语句是否为True,如果为True就执行循环体, 执行完循环体,在判断条件语句的是否为True,如果为True就执行循环体直到条件语句的值为False,循环结束,直接执行while循环后面的其他语句
注意:如果条件语句的结果一直都是True,就会造成死循环,所以在循环体要有让循环结束的操作
python中没有do-while循环(c语言有)
我们可以通过设置条件表达式永远不为 false 来实现无限循环,实例如下:
var = 1
while var == 1 : # 表达式永远为 true
num = int(input("输入一个数字 :"))
print ("你输入的数字是: ", num)
print ("Good bye!")
你可以使用 ctr+c 来退出当前的无限循环。无限循环在服务器上客户端的实时请求非常有用
练习:使用while循环计算1+2+3...+100
sum=0
num=1
while num<=100:
sum+=num
num+=1
print(sum) #5050
练习:计算2+4+6...+100
num=2
sum=0
while num<=100:
if num%2==0:
sum+=num
num+=1
print(sum,num) #2550 101
# 方法2:
sum=0
num=2
while num<=100:
sum+=num
num+=2
print(sum,num) #2550 102
while 循环使用 else 语句
在 while … else 在条件语句为 false 时执行 else 的语句块:
count = 0
while count < 5:
print (count, " 小于 5")
count = count + 1
else:
print (count, " 大于或等于 5")
关键字:continue和break
(1)break和continue两个关键字,都是作用于循环当中,用来结束循环,只能放在循环语句中,放在其他地方会报错
(2)continue:关键字,在循环体中遇到continue和break就结束当次循环,直接进入下一次循环的判断(如果是for循环,就让变量去取下一个值,如果是while循环就判断while后面的条件语句是否为True)
for x in range(6):
print(x)
continue #不执行continue后的 语句,直接让x取下一个值
print('===') #0 1 2 3 4 5
for x in range(10):
if x%2: # 若x%2=1时,条件为True,就执行continue直接跳到下个循环,
#若x%2=0,条件为False,就向下执行打印 ,所以打印出来为偶数
continue
print(x) #0 2 4 6 8
break:关键字,在循环体中遇到break,就直接结束整个循环,直接执行循环体后边的其他语句
for x in range(3):
print(x)
break
print('====')
print('----')
通过改变条件语句的值,来结束循环
numer = 1
while numer <= 100:
print(numer)
numer += 1
使用break结束死循环
numer = 1
while True:
if numer > 100:
break
print('==:',numer)
numer += 1
练习:找出100-1000以内的第一个能够被3 整除同时能被17整除的数
我的错误示例:
# while 100<=num<=1000: #####注意:这里报错,不可以这么写
# if num%3==0 and num%17:
# print(x)
# break
for x in range(100,1001):
if x%3==0 and x%17==0:
print(x)
#找到第一个就不用再找了
break #102
for和while的选择
for 循环的次数是确定的,while循环的循环次数可以不确定
(1)循环次数不确定的时候,选择while循环,确定次数的一般用for循环
(2)通过循环遍历一个序列中的值,使用for循环
(3)input()
input():接收来自控制台输入数据的数据(输入的数据以回车结束)
程序中遇到input()函数,程序会阻塞,等待用户输入完成后,才会接着执行后面的代码
(4)产生随机数
python中有一个内置模块,可以产生随机数:random
randint(m,n):产生一个m~n的随机整数
num=int(input('请输入一个数字:'))
# print(num)
# 导入random模块
import random
# 产生100-200的随机数
number=random.randint(100,200)
print(number)
pass 语句
**(1)Python pass是空语句,是为了保持程序结构的完整性
(2)pass 不做任何事情,一般用做占位语句,如下实