一、什么是条件控制语句
条件控制语句,也可以称之为判断语句,通过一条或多条的执行结果来决定接下来要执行的代码块。
二、if语句
if语句是用来进行判断的,最简答的if语句只有一个判断一个操作。
语法:
if 条件: 条件成立,执行代码块
如:
‘‘‘‘ if语句 if 条件表达式: 条件成立则执行 执行一下代码 ‘‘‘ # i = 0 # print(‘---------if开始‘) # if i < 5:#条件成立 # print(‘我比5大‘) # print(‘---------if结束‘)
if-else
和其他语言一样,python中也提供了与if搭配使用的else语句,else表示否则。在没有通过if判断的时候,执行的另一个操作。
语法:
if 条件: 满足条件执行的代码块1 else: 没有满足if条件执行的代码块2
如:
‘‘‘ if 条件表达式: 要执行的代码块 else : 条件不成立的时候 要执行的代码块 ‘‘‘ # i = 10 # if i < 5: # print(‘我比5小‘) #条件成立 # else: #条件不成立的时候 # print(‘我比5大‘)
if-elif-else
一个if只能有一个else,但是可以拥有多个elif。
Python中没有switch-case,可以使用if-elif-else来代替switch-case
语法:
if 条件:
满足if条件执行的代码块1
elif 条件1:
满足条件1执行的代码块2
elif 条件2:
满足条件2执行的代码块3
else:
不满足以上条件执行的代码块4
if嵌套
If嵌套就是在if-elif-else结构中再嵌套另外一个if-elif-else结构。
语法:
if 条件:
满足if条件执行的代码块
elif 条件1:
if 条件1-1:
满足条件1-1执行的代码块
elif 条件1-2:
满足条件1-2执行的代码块
else:
都不满足执行的代码块
elif 条件2:
满足条件2执行的代码块
elif 条件3:
满足条件1执行的代码块
‘‘‘ 一个if只能有一个else,但是可以拥有多个elif. Python中没有switch-case,可以使用if-elif-else来代替switch-case ‘‘‘ ‘‘‘ 使用方法: if 条件: 满足if条件执行的代码块1 elif 条件1: 满足条件1执行的代码块2 elif 条件2: 满足条件2执行的代码块3 else: 不满足以上条件执行的代码块4 ‘‘‘ ‘‘‘ if 嵌套 就是在if-elif-else结构中再嵌套另外一个if-elif-else结构 ‘‘‘ # x = int(input(‘请输入第一个数:‘)) # y = int(input(‘请输入第二个数:‘)) # z = int(input(‘请输入第三个数:‘)) # if x == y == z: # print(‘三个数相等!‘) # if x > y: # if x > z : # print(‘最大数为: %d‘%x) # else: # print(‘最大数为: %d‘%z) # elif x > z : # if y > z: # print(‘最大数为:%d‘%y) # else: # if y > z: # print(‘最大数为:%d‘%y) # else: # print(‘最大数为:%d‘%z) ‘‘‘ 猜拳游戏 random.randint(x,y) 返回x 到 y自检的随机数 ‘‘‘ # import random # user = input(‘请输入石头、剪刀、布:‘)#接受用户输入的内容 # cont = [‘石头‘,‘剪刀‘,‘布‘]#初始化数据 # num = random.randint(0,3)#获取0-2之间的随机数 # # if user == ‘石头‘: # if cont[num] == ‘石头‘: # print(‘用户输入的是%s,电脑输入的是%s,平局‘%(user,cont[num])) # elif cont[num] == ‘剪刀‘: # print(‘用户输入的是%s,电脑输入的是%s,你赢了‘%(user,cont[num])) # elif cont[num] == ‘布‘: # print(‘用户输入的是%s,电脑输入的是%s,电脑赢了‘%(user,cont[num])) # elif user == ‘剪刀‘: # if cont[num] == ‘石头‘: # print(‘用户输入的是%s,电脑输入的是%s,电脑赢了‘ % (user, cont[num])) # elif cont[num] == ‘剪刀‘: # print(‘用户输入的是%s,电脑输入的是%s,平局‘ % (user, cont[num])) # elif cont[num] == ‘布‘: # print(‘用户输入的是%s,电脑输入的是%s,你赢了‘ % (user, cont[num])) # elif user == ‘布‘: # if cont[num] == ‘石头‘: # print(‘用户输入的是%s,电脑输入的是%s,你赢了‘ % (user, cont[num])) # elif cont[num] == ‘剪刀‘: # print(‘用户输入的是%s,电脑输入的是%s,电脑赢了‘ % (user, cont[num])) # elif cont[num] == ‘布‘: # print(‘用户输入的是%s,电脑输入的是%s,平局‘ % (user, cont[num])) # else: # print(‘您的输入有误,拜拜!‘) ‘‘‘ 练习 ‘‘‘ # score = int(input(‘请输入分数:‘)) # if score >= 90: # print(‘同学你好棒!你的成绩是A‘) # elif 60 <= score <= 89: # print(‘同学表现还不错!你的成绩是B‘) # else : # print(‘同学你要加油哦!‘)
三、循环语句
循环语句就是在符合条件的情况下。重复执行一个代码段。Python中的循环语句有while和for。
while循环
while是一个条件循环语句,与if一样,也有条件表达式。如果条件为真,while中的代码就会一直循环执行,直到循环条件不再为真才停止。
语法:
while 条件: 代码块
练习:用while计算1到100的和
‘‘‘ 循环 while for ‘‘‘ ‘‘‘ while 条件表达式: #当条件为true的时候进入循环 要执行的代码块 #执行完里面的代码块则回到条件表达式 进行条件判断 ‘‘‘ # i = 1 #初始化变量 # while i < 6: #对初始化条件信息进行判断,判断成立则进入循环体 # print(‘I LOVE YOU‘) #执行完里面的代码块则回到条件表达式 # i+=1 #如果没有i增加 系统会不停的打印 # print(i) ‘‘‘ Python里面没有i++ 自增用i+=1 ‘‘‘ ‘‘‘ 计算1到100的和 ‘‘‘ # i = 1 # sum = 0 # while i <= 100: # sum += i #sum = sum + i # i+=1 # print(sum) #在while循环里面 输出每一个sum # print(sum) #在while循环外面 只输出最后的值
while循环嵌套
if中可以再嵌套if,那么while中也可以嵌套while循环,从而实现一些特殊的效果。
语法:
while 条件1:
满足条件1执行代码块1
while 条件2:
满足条件1又满足条件2执行代码块2
......
练习:实现用while输出以下三角形
‘‘‘ while 循环嵌套 while 条件1: 满足条件1执行代码块1 满足条件2: 满足条件1又满足条件2执行代码块 ‘‘‘ # i = 0 # while i < 5: # print(‘这个是外循环的第%d遍‘%i) # m = 0 # while m < 5: # print(‘这是里面循环的第%d遍‘%m) # m += 1 # i += 1 # print(‘_‘*20) # i = 0 # while i < 5: #控制行数 # m = 0 # while m <= i: # print(‘*‘,end = ‘‘) #end = ‘ ‘表示print的结束符为空格 默认情况下是换行 # m += 1 # i += 1 # print()#每行输出完之后输出一个换行 print()默认换行结束
while循环使用else语句
while-else在条件语句为false时执行else语句块。
语法:
while 条件:
满足条件执行代码块
else:
不满足条件执行代码块
‘‘‘ while循环 while 条件: 条件成立时执行的代码块 else: 条件不成立时执行的代码块 ‘‘‘ # a = 0 # while a < 5: # print(‘爱你一万年‘) # a+=1 # else: #当条件不成立时 # print(a) # print(‘我是至尊宝‘)
让用户控制循环条件
在使用循环的时候,让用户控制循环的结束,我们在其中定义一个退出值,主要用户输入的不是这个值,就继续循环,如果用户输入了退出值,那么程序就停止执行。
‘‘‘ 控制退出程序 ‘‘‘ # while True: # flag = input(‘你是否要退出程序(y/n):‘) # print(flag) # if flag == ‘y‘: # break
使用break退出循环
在循环语句中使用break的作用是,在循环体内遇到break则会跳出循环,终止循环,并且不论循环的条件是否为真,都不再继续循环下去。
如:
‘‘‘ 使用break退出程序 不管条件是否为真 都退出程序 ‘‘‘ # a = 0 # while a < 5: # if a == 3: # print(‘紫霞仙子说:别说话!吻我‘) # break # print(‘至尊宝:爱你一万年‘) # a += 1
循环中使用continue
如果想要一种效果,退出当前循环,再继续执行下一次循环。就可以使用continue
如:
‘‘‘ break 退出整个循环 不管条件是否为真 continue跳出当前循环 直接执行下一次循环 ‘‘‘ # a = 0 # while a <= 10: # a += 1 # print(‘第%d圈开始‘%a) # print(‘好累哈‘) # if a == 5: # print(‘趁老师不在,后半圈没跑‘) # print() # continue # print(‘第%d圈结束‘%a) # print()
注意:continue和break常用于while和for循环中。
for语句
for语句一般语法
for是Python中另外一个循环语句,提供了Python中最强大的循环结构,它可以循环遍历任何序列项目,如:一个列表或者一个字符串。(sequence可以是列表元组集合,如果是字典只能遍历keys,无法遍历values)
语法:
for <variable> in <sequence>:
<statements>
else:
<statements>
如:
‘‘‘ for循环 Python中最强大的循环结构 不需要判断条件 他可以循环遍历任何序列项目,如一个列表或者一个字符串 for 变量 in 序列: 执行的代码块 ‘‘‘ # list01 = [‘joe‘,‘susan‘,‘jack‘,‘tom‘] #遍历列表 # for i in list01: # print(i)
#while遍历# i = 0# while i < len(list01):# print(list01[i])# i += 1
创建一个名为favorite_places的字典。在这个字典中,将三个人的名字用作键;对于其中的每个人,都存储他喜欢的1?3个地方. 朋友指出他们喜欢的一个地方(input)。遍历这个字典,并将其中每个人的名字及其喜欢的地方打印出来。
# favorite_places = {‘张三‘:[‘上海‘,‘北京‘,‘深圳‘], # ‘李四‘:[‘张家界‘,‘九寨沟‘,‘鼓浪屿‘]} # name = input(‘请输入姓名:‘) # for i in favorite_places: # # print(i) #遍历字典输出key # if name == i: #遍历字典获取key 然后通过key和输入的值判断 # print(favorite_places[name]) # favorite_places = {‘张三‘:[‘上海‘,‘北京‘,‘深圳‘], # ‘李四‘:[‘张家界‘,‘九寨沟‘,‘鼓浪屿‘]} # name = input(‘请输入姓名:‘) # for i in favorite_places.values(): #只获取value # print(i) # if name == i: #遍历字典获取key 然后通过key和输入的值判断 # print(favorite_places.items()) #获取key value以列表的形式输出 key和value在一个元祖里面 # for k,v in favorite_places.items(): # print(k,v)#打印出key以及对应的value
在for循环中使用break和continue
如:
‘‘‘ for循环中使用break continue ‘‘‘ # list01 = [‘joe‘,‘susan‘,‘jack‘,‘tom‘] # for i in list01: # if i == ‘susan‘: # # break # continue # print(i) # list01 = [‘joe‘,‘susan‘,‘jack‘,‘tom‘] # for i in list01: # if i == ‘susan‘: # # break # # continue # pass #表示后面什么都不用操作了 占位 规范 # print(i)
pass
pass语句的使用表示不希望任何代码或者命令的执行;
pass语句是一个空操作,在执行的时候不会产生任何反应;
pass语句常出现在if、while、for等各种判断或者循环语句中;
range()函数-简介
Python中range() 函数返回的是一个整数序列的对象,一般用在 for 循环中。
函数语法
range(start, stop[, step])
参数说明:
start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
end: 计数到 end 结束,但不包括 end。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
range()函数使用
如:
‘‘‘ 99乘法表 1x1 = 1 1x2 = 2 2x2 = 4 1x3 = 3 2x3 = 6 3x3 = 9 ‘‘‘ #补充知识点 # print(list(range(1,10))) #range 返回一个整数序列 左闭右开 # print(list(range(5))) # print(list(range(0,10,2))) #2为步长 # 方法一 # for i in range(1,10): # # print(i) # for j in range(1,i + 1): # print(‘%d x %d = %d‘%(j,i,(j*i)),end = ‘ ‘) # print( )#以换行结尾 #方法二 # i = 1 # while i < 10: #控制行数 # # print(i)#控制行 # j = 1 # while j <= i: #里面嵌套控制列 # print(‘%d x %d = %d‘ % (j,i,j*i),end = ‘ ‘) # j+=1 # i+=1 # print() ‘‘‘ 1-100求和 ‘‘‘ #方法一 # i = 1 # sum = 0 # while i <= 100: # sum += i # i += 1 # print(sum) #方法二 # sum = 0 # for i in range(1,101): # sum += i # print(i) # print(sum) ‘‘‘ 从键盘输入一个字符串,将小写字母全部转化为大写字母 将字符串以列表的形式输出(如果字符串包含整数,转化为整数) ‘‘‘ # str = input(‘请输入一个字符串:‘) #接受一个字符串dhsbhf1234 # list = [] #定义一个空列表 # for i in str: #遍历字符串 # # print(i) # #判断是否为数字 是的话转化为int 并追加到列表 # if i.isdigit() == True: #isdigit() isdecimal() isnumeric() # list.append(int(i)) # else:#不是数字则转化为大写 追加到list # list.append((i.upper())) # print(list)#输出列表 ‘‘‘ 随机输入8位以内的正整数, 1、求他是几位数 2、逆序打印出个位数字 ‘‘‘ # num = input(‘请输入8位以内的正整数:‘) # if num.isdecimal():#首先判断是否为数字 # if len(num) <= 8: # print(‘这个数是%d位数‘%len(num)) # print(num[::-1])#切片 # else: # print(‘输入有误‘) # else : # print(‘你输入的不是数字,请重新输入!‘) ‘‘‘ 一个球中n米(自己输入)高度自由落下,每次落地后反弹回到原来高度的一般 再次落下,求在第10次落地时共经过多少米? ‘‘‘ # h = 100 # sum = 0 # for i in range(1,11): # #第一次触地 # if i == 1: # sum += h # else: # h /= 2 #第二次触地是前一次的一半 # sum += h * 2 #再累加 # print(sum)
四、列表推导式
列表推导式:列表推导式(list comprehension)是利用其它列表创建新列表的一种方式,工作原理类似for循环,即可对得到的元素进行转换变形 ,其基本格式如下(可以有多个for语句)
[expr for value in collection if condition] expr可以使for循环的变量,也可以是表达式
集合推导式:集合推导式跟列表推导式非常相似,唯一区别在于用{}代替[]。其基本格式如下:
{ expr for value in collection if condition }
练习:
‘‘‘ 输入一行字符,分别统计出其中英文字母、空格、数字和其他字符出现的个数 isalpha isdigit isspace ‘‘‘ # str = input(‘请输入字符:‘) # zf = 0 # num = 0 # space = 0 # other = 0 # for i in str : # if i.isdigit(): # num += 1 # elif i.isalpha(): # zf += 1 # elif i.isspace(): # space += 1 # else: # other += 1 # print(‘当前数字的个数是:%d,当前字符的个数是:%d,当前空格的个数是:%d,当前其他个数是:%d‘ % (num,zf,space,other)) ‘‘‘ 找出名字长度大于4的名字,组成列表打印出来 过滤掉长度大于5的字符串列表,并将剩下的转化成大写字母 ‘‘‘ names = [‘Tom‘,‘Billy‘,‘Jefferson‘,‘Andrew‘,‘Wesley‘,‘Steven‘, ‘Joe‘,‘Alice‘,‘Jill‘,‘Ana‘,‘Wendy‘,‘Jennifer‘,‘Sherry‘] #方法一 # name = [] # for i in names: # if len(i) > 4: # name.append(i) # print(name) #列表推导式 # name = [i for i in names if len(i) > 4] # print(name) # name = [i.upper() for i in names if len(i) <= 5] # print(name) ‘‘‘ 求出矩阵对应元素的和 ‘‘‘ # m = [[1,2,3], # [4,5,6], # [6,7,8]] # n = [[2,2,2], # [3,3,3], # [4,4,4]] # for i in range(3): # for j in range(3): # print(m[i][j] + n[i][j]) #列表推导式 # num = [m[i][j] + n[i][j] for i in range(3) for j in range(3)] # print(num) # # num = [m[i][j] * n[i][j] for i in range(3) for j in range(3)] # print(num) ‘‘‘ 列表推导式 ‘‘‘ #正常情况 # list = [] # for i in range(3,10): # if i % 2 == 0: # list.append(i) # print(list) #简写方式 # list = [i for i in range(3,10) if i % 2 == 0] # print(list) ‘‘‘ 字典推导 ‘‘‘ # list = [‘joe‘,‘susan‘,‘black‘,‘joe‘] # dict = {k:v for k,v in enumerate(list)} # print(dict) # dict = {‘name‘:‘joe‘,‘age‘:‘18‘} # print(list(dict.items())) # for k,v in dict.items(): # print(k,v) ‘‘‘ 嵌套列表推导式 ‘‘‘ name = [[‘Tom‘,‘Billy‘,‘Jefferson‘,‘Andrew‘,‘joe‘], [‘Alice‘,‘Jill‘,‘Ana‘,‘Wendy‘,‘Eva‘]] # print(names[0][1]) # list = [] # for i in range(0,2): # for j in name[i]: # list.append(j) # print(list) #嵌套推导式 # list = [j for i in range(0,2) for j in name[i] if len(j) > 4] # print(list) ‘‘‘ 打印输出所有的“水仙花数” “水仙花数”是指依一个三位数,其各位数字立方和等于该数本身 ‘‘‘ #利用for循环控制遍历100-999,每个数字分解出个位,十位,百位 #然后分别**3 然后相加 判断 是否等于本身 #例如: # num = 153 #取百位 # print(num//100) #取十位 # print(num%100//10) #取个位 # print(num%100%10) # for i in range(100,1000): # x = i // 100 # y = i % 100 //10 # z = i % 100 % 10 # if i == x**3 + y**3 + z**3 : # print(i) ‘‘‘ 打印菱形 ‘‘‘ # i = ‘*‘ # j = ‘***‘ # m = ‘*****‘ # n = ‘*******‘ # print(i.center(7)) # print(j.center(7)) #方法一 # for i in range(1,7,2): # print((‘*‘*i).center(7)) # for j in range(7,0,-2): # print((‘*‘ * j).center(7)) #方法二 # for i in range(1,8,2): # print((‘*‘*i).center(7)) # if i == 7: # for j in range(5,0,-2): # print((‘*‘ * j).center(7)) ‘‘‘ 一个5位数 判断是否是回文数 即12321 ‘‘‘ # num = input(‘请输入一个5位数:‘) # if num[0] == num[4] and num[1] == num[3]: # print(‘%s是回文数‘%num) # else: # print(‘%s不是回文数‘%num) #推广 # num = input(‘请输入一个数字:‘) # if num == num[::-1]: # print(‘%s是回文数‘%num) # else: # print(‘%s不是回文数‘%num) ‘‘‘ 求一个3*3矩阵对角线元素之和 ‘‘‘ # m = [[1,2,3], # [4,5,6], # [7,8,9]] # x = 0 # y = 0 # for i in range(3): # x += m[i][i] # y += m[i][2-i] # print(x) # print(y)
五、内置函数
内置函数(可通过dir(__builtins__)查询)
下面列出的是常用的,红色标注的是使用频率更高的
练习:
‘‘‘ 有四个数字:1、2、3、4能组成多少个互不相同并且没有重复数字的三位数?各是多少? ‘‘‘ # for x in range(1,5): # for y in range(1,5): # for z in range(1,5): # if x != y and x != z and y != z: # print(x * 100 + y * 10 + z) # num = [x * 100 + y * 10 + z for x in range(1,5) for y in range(1,5) for z in range(1,5) if x != y and x != z and y != z] # print(num) ‘‘‘ 将列表用for循环添加到另外一个字典中 ‘‘‘ # names = [‘Tom‘,‘Billy‘,‘Joe‘,‘Andrew‘,‘Wesley‘,‘Steven‘,‘Alice‘,‘Eva‘] # print(list(enumerate(names))) # name = {k:v for k,v in enumerate(names)} # print(name) ‘‘‘ 设置一组账号和密码不少于两个 通过输入账号和密码,如果输入正确则显示登录成功 若账号或密码输入错误则显示登录失败 对多可以输入三次 ‘‘‘ # user = {‘joe‘:‘123456‘,‘jack‘:‘6543321‘,‘black‘:‘455789‘} # # for i in range(3): # name = input(‘请输入您的用户名:‘) # pwd = input(‘请输入您的密码:‘) # if name in user: # if pwd == user[name]: # print(‘登录成功!‘) # break # else: # if i == 2: # print(‘您的账号已经冻结‘) # break # print(‘您的密码有误!‘) # else: # if i == 2: # print(‘您的账号已经while冻结‘) # break # print(‘您输入的账号有误!‘) ‘‘‘ 求阶乘 用while 和 for 分别实现 ‘‘‘ # num = int(input(‘请输入你要计算的数字:‘)) # i = 1 # det = 1 # while i <= num : # det *= i # i += 1 # print(det) # print(‘数字%d:的阶乘是%d:‘ % (num,det)) # num = int(input(‘请输入你要计算的数字:‘)) # det = 1 # for i in range(1,num + 1): # det *= i # print(det) ‘‘‘ 冒泡排序 ‘‘‘ list01 = [2,6,4,9,3,10] # for i in range(len(list01)): # for j in range(1,len(list01) - i): # if list01[j] > list01[j-1]: # list01[j],list01[j-1] = list01[j-1],list01[j] # print(list01) # for i in range(len(list01)): # for j in range(1,len(list01) - i): # if list01[j] < list01[j-1]: # list01[j],list01[j-1] = list01[j-1],list01[j] # print(list01)
原文地址:https://www.cnblogs.com/lyywj170403/p/10309831.html