Python之路-条件控制&循环语句&列表推导式&常用函数
一、什么是条件控制语句
条件控制语句,也可以称之为判断语句,通过一条或多条的执行结果来决定接下来要执行的代码块。
二、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)
Python之路-条件控制&循环语句&列表推导式&常用函数的更多相关文章
- python系列八:Python3条件控制&循环语句
#!/usr/bin/python #-*-coding:gbk-*-#Python3 条件控制&循环语句import randomage = int(input("请输入你的年龄: ...
- Python中的条件和循环语句
条件和循环语句 1. 条件语句 if单用 格式:if 条件表达式 例如:if 5 > 3: print('True') >>> 'True' #当条件满足时才会执行上述操作. ...
- LiveScript 流程控制、循环以及列表推导式
The LiveScript Book The LiveScript Book Generators and Yield 你可以在你的 LiveScript 代码中使用 Ecmascript ...
- python基础知识15---三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数
阅读目录 一 三元表达式.列表推导式.生成器表达式 二 递归与二分法 三 匿名函数 四 内置函数 五 阶段性练习 一. 三元表达式.列表推导式.生成器表达式 1 三元表达式 name=input('姓 ...
- python学习笔记:第12天 列表推导式和生成器
目录 1. 迭代器 2. 推导式 1. 迭代器 什么是生成器呢,其实生成器的本质就是迭代器:在python中有3中方式来获取生成器(这里主要介绍前面2种) 通过生成器函数获取 通过各种推导式来实现生成 ...
- python之旅:三元表达式、列表推导式、生成器表达式、函数递归、匿名函数、内置函数
三元表达式 #以下是比较大小,并返回值 def max2(x,y): if x > y: return x else: return y res=max2(10,11) print(res) # ...
- #7 Python顺序、条件、循环语句
前言 上一节讲解了Python的数据类型和运算,本节将继续深入,涉及Python的语句结构,相当于Python的语法,是以后编写程序的重要基础! 一.顺序语句 顺序语句很好理解,就是按程序的顺序逻辑编 ...
- 【python之路4】循环语句之while
1.while 循环语句 #!/usr/bin/env python # -*- coding:utf-8 -*- import time bol = True while bol: print '1 ...
- python之生成器和列表推导式
一.生成器函数 1.生成器 就是自己用python代码写的迭代器,生成器的本质就是迭代器(所以自带了__iter__方法和__next__方法,不需要我们去实现). 2.构建生成器的两种方式 1,生成 ...
随机推荐
- 靠!老师居然叫我们去写博弈论!!!结果写了一个晚上的博弈论,简直要死QAQ。。。发发博客休息一下。。。TAT。。。
萌萌的糖果博弈 题目描述: 用糖果来引诱小朋友学习是最常用的手法,绵羊爸爸就是用糖果来引诱萌萌学习博弈的.他把糖果分成了两堆,一堆有A粒,另一堆有B粒.他让萌萌和他一起按照下面的规则取糖果:每次可以任 ...
- 放一道比较基础的LCA 的题目把 :CODEVS 2370 小机房的树
题目描述 Description 小机房有棵焕狗种的树,树上有N个节点,节点标号为0到N-1,有两只虫子名叫飘狗和大吉狗,分居在两个不同的节点上.有一天,他们想爬到一个节点上去搞基,但是作为两只虫子, ...
- HDU 6616 Divide the Stones
目录 题面 中文题意 比赛惨状 我的走不通的思路 \(m\)是偶数的情况 \(m\)是奇数的情况 题解的思路 另一些思路 源代码 题面 Time limit 3000 ms Memory limit ...
- 给网页头部标题加logo
现在在写公司的官网,需要在网页的头部加logo,没有加的时候是这样的 那么,现在只要一步,就可以了,加上一行代码 <link rel="icon" href="图标 ...
- linux 多进程并发服务__关于子进程回收的方法
以TCPServ 服务程序来说: 1)父进程:负责系统初始化,以及监听(listen),接受连接请求(accept);其中accept 默认阻塞调用. 2)每接受一个连接请求,动态新建(fork)一个 ...
- spring bean.xml
http://blog.csdn.net/lanshengsheng2012/article/details/9011635
- spring MVC junit单元测试 各test之间共享变量
使用静态变量 private static String iPSetCode=null;
- glm初试,关于行矩阵列矩阵问题
/*** * glm中矩阵是行优先存储的,这不同于opengl默认的以列优先存储的方式??,以下面矩阵mat为例 * 它是用四个行向量来模拟存储四个行:vec4 value[4],其中 * value ...
- Android Build System Ultimate Guide
Android Build System Ultimate Guide April 8,2013 Lately, Android Open Source Project has gone throug ...
- Stream 源码分析
Stream 支持顺序和并行聚合操作的一组元素序列. 1)operations:支持在单个元素上执行的操作,流操作分为中间操作和终止操作 1-1)中间操作: 1-1-1)无状态:unordered() ...