zoukankan      html  css  js  c++  java
  • 第11课 循环嵌套和算法

    一、循环嵌套

     1、打印九九乘法表

    for i in range(1, 10):  # 行数
        for j in range(1, i + 1):  #
            print('{} * {} = {}'.format(j, i, i * j), end = '	' ) # end = ''---的意思是不换行; 	--制表符,作用是对齐表格数据的各列
        print()  # print()---默认换行
    
    
    #  输出结果
    1 * 1 = 1    
    1 * 2 = 2    2 * 2 = 4    
    1 * 3 = 3    2 * 3 = 6    3 * 3 = 9    
    1 * 4 = 4    2 * 4 = 8    3 * 4 = 12    4 * 4 = 16    
    1 * 5 = 5    2 * 5 = 10   3 * 5 = 15    4 * 5 = 20    5 * 5 = 25    
    1 * 6 = 6    2 * 6 = 12   3 * 6 = 18    4 * 6 = 24    5 * 6 = 30    6 * 6 = 36    
    1 * 7 = 7    2 * 7 = 14   3 * 7 = 21    4 * 7 = 28    5 * 7 = 35    6 * 7 = 42    7 * 7 = 49    
    1 * 8 = 8    2 * 8 = 16   3 * 8 = 24    4 * 8 = 32    5 * 8 = 40    6 * 8 = 48    7 * 8 = 56    8 * 8 = 64    
    1 * 9 = 9    2 * 9 = 18   3 * 9 = 27    4 * 9 = 36    5 * 9 = 45    6 * 9 = 54    7 * 9 = 63    8 * 9 = 72    9 * 9 = 81    

    二、列表生成式

    1、aftertax = [int(one * 0.9) for one in beforetax  if one > 3500]

      one * 0.9--循环体内容

      for one in beforetax---循环语句

      if one > 3500----过滤条件

    举例:计算员工的税后工资

    #---计算员工税后工资
    beforetax = [10000, 15000, 8000, 3400, 5000]
    aftertax = [int(one * 0.9) for one in beforetax if one > 3500]   # 加上int取整数,加上if条件判断
    print(aftertax)
    
    # 执行结果
    [9000, 13500, 7200, 4500]

    三、算法

    1、冒泡排序---alist = [8, 2, 0, 5]

    思路:

    1)找出 3个较大值,最后一个就是最小的

      第一次----8

        1---8和2比较-----8   交换位置 ---[2, 8, 0, 5]

        2---8和0比较-----8   交换位置----[2, 0, 8, 5]

        3---8和5比较-----8   交换位置----[2, 0, 5, 8]

      第二次----5

        1---2和0比较----2    交换位置----[0, 2, 5, 8]

        2---2和5比较----5    不用交换----[0, 2, 5, 8]

      第三次----2

        1---0和2比较----2    不用交换----[0, 2, 5, 8]

    # ------------冒泡排序
    alist = [8, 2, 0, 5]
    for i in range(0, len(alist) - 1):  # 遍历列表中的元素
        for j in range(0, len(alist) - i - 1):  # 比较大小。 len(alist) - i - 1 --- 说明:len(alist) - i表示减去已经比过的下标,再减一是因为从0开始
             if alist[j] > alist[j + 1]:
                 alist[j], alist[j + 1] = alist[j + 1], alist[j]  # 交换位置
    print(alist)
    
    
    # 执行结果
    [0, 2, 5, 8]

    2、按照从大到小排列,只需要把 if alist[j] > alist[j + 1] 改为  if alst[j] < alist[j + 1]即可

    #-------按照从大到小排列
    alist = [8, 2, 0, 5]
    for i in range(0, len(alist) - 1):  # 遍历列表中的元素
        for j in range(0, len(alist) - i - 1):  # 比较大小。 len(alist) - i - 1 --- 说明:len(alist) - i表示减去已经比过的下标,再减一是因为从0开始
             if alist[j] < alist[j + 1]:
                 alist[j], alist[j + 1] = alist[j + 1], alist[j]  # 交换位置
    print(alist)
    
    
    # 执行结果
    [8, 5, 2, 0]

    四、知识点补充

    1、判断条件简写  

     只要x是非零值、非空字符串、非空list等,就判断为True,否则为False。

    >>> alist
    [1, 2, 3, 4, 5]
    >>> x = 9
    >>> if x:
            print('hello world')
    
        
    hello world
    >>> # 只要x是非零值、非空字符串、非空list等,就判断为True,否则为False

    2、关于函数的调用,必须先定义后调用。

    #----函数先定义,再调用
    def bar():
        print('in bar()')
    
    def foo():
        print('in foo()')
        bar()
    
    foo()
    
    #-----也可以颠倒次序,函数不调用不执行。
    def foo():
        print('in foo()')
        bar()
    
    def bar():
        print('in bar()')
    
    foo() 
  • 相关阅读:
    【转】动态模型及其求解介绍–番外篇
    【转】动态模型及其求解介绍—下
    Belief propagation
    隐马尔科夫模型(Hidden Markov Models) 系列之一
    隐马尔科夫模型(Hidden Markov Models) 系列之四
    【PGM】factor graph,因子图,势函数potential function,Template models
    词语搭配系统
    PHP Catalan数的几个应用
    PHP 求链表并集
    PHP 输入n,判断从1~n序列中十进制数里1出现的次数
  • 原文地址:https://www.cnblogs.com/nick1998/p/10035654.html
Copyright © 2011-2022 走看看