第11课 循环嵌套和算法

一、循环嵌套

 1、打印九九乘法表

for i in range(1, 10):  # 行数
    for j in range(1, i + 1):  #
        print('{} * {} = {}'.format(j, i, i * j), end = '\t' ) # end = ''---的意思是不换行; \t--制表符,作用是对齐表格数据的各列
    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() 

 

posted @ 2018-12-02 16:15  风吹麦浪听涛声  阅读(468)  评论(0编辑  收藏  举报