排序循环函数练习

选择排序

# 从大到小
lista = [3,5,2,4,1]
count = 0
for i in range(len(lista)):
    for j in range(i+1, len(lista)):
        print(lista)
        if lista[i]<lista[j]:
            print('exchange')
            blank = lista[j]
            lista[j] = lista[i]
            lista[i] = blank
        count += 1
        
print('经过 %d次循环完成排序' %count)
print(lista)

冒泡排序

# 从大到小
lista = [3,5,2,4,1]
count = 0
for i in range(len(lista)):
    for j in range(i+1, len(lista)):
        print(lista)
        if lista[i]<lista[j]:
            print('exchange')
            blank = lista[j]
            lista[j] = lista[i]
            lista[i] = blank
        count += 1
        
print('经过 %d次循环完成排序' %count)
print(lista)

封装成函数

def rank(lista, ascending=0):
    '''
    对列表进行冒泡排序,输入参数list,0/1
    第二个参数0降序,1升序
    '''
    count = 0
    for i in range(len(lista)-1):
        for j in range(len(lista)-i-1):
            if ascending == 0 :
                if lista[j]<lista[j+1]:
                    blank = lista[j]
                    lista[j] = lista[j+1]
                    lista[j+1] = blank
            else:
                 if lista[j]>lista[j+1]:
                    blank = lista[j]
                    lista[j] = lista[j+1]
                    lista[j+1] = blank
                    
                
            count += 1

    print('经过 %d次循环完成排序' %count)
    print(lista)

	help(rank)
Help on function rank in module __main__:

rank(lista, ascending=0)
    对列表进行冒泡排序,输入参数list,0/1
    第二个参数0降序,1升序
listb=[4,7,9,2,4,0,4]
rank(listb)
经过 21次循环完成排序
[9, 7, 4, 4, 4, 2, 0]
rank(listb,1)
经过 21次循环完成排序
[0, 2, 4, 4, 4, 7, 9]

盲写代码时的几个错误:

range用法
range(a)
range(a,b)
不是[], 中间也不是:

选择排序, 选出最大的放在前面,第二层循环是从i到最后元素(后半部分)
冒泡排序, 小的往后移动,第二层循环是从起始到总长-i-1(前半部分)

账号管理系统

def login():
    name = input('请输入用户名:')
    if dict_account.__contains__(name):
        print('已有账户')
        password = input('请输入密码:')
        if password == dict_account[name]: 
            print('login succeed')
    else:
        # 没有账户,
        password = input('设置密码:')
        dict_account[name] = password
        login()
            
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值