zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    C#资源释放方法实例分析
    c#中在一个窗体中触发另一个窗体的事件
    C#定时器的用法
    C# 类的析构函数和释放函数
    C# 定时执行,文件占用
    C#多线程与异步
    Newtonsoft中JArray 转成list<object>
    C#中Dictionary的用法
    C# 解析Json文件(使用NewtonJson库)
    mysql无法远程连接10038错误的坑(阿里云ecs)
  • 原文地址:https://www.cnblogs.com/lyywj170403/p/10309831.html
Copyright © 2011-2022 走看看