python练习(8)——简单选择排序,列表解析式使用(格式化输出杨辉三角,九九乘法表)

# 简单选择排序法
b = [3,4,2,1,6,4,6,7]
for i in range(len(b)):
    maxindex = i
    for j in range(i+1,len(b)):
        if b[maxindex] < b[j]:
            maxindex = j
    if maxindex != i:
        b[i],b[maxindex] = b[maxindex],b[i]
print(b)

# 一次迭代找出最大和最小,分别移位,效率略好
b = [3,4,2,1,6,4,6,7]
for i in range(len(b)//2):
    maxindex = i
    minindex = i
    for j in range(i+1,len(b)-i):
        if b[j] > b[maxindex]:
            maxindex = j
        if b[j] < b[minindex]:
            minindex = j
    if b[minindex] == b[maxindex]:                   # 最大最小相同,直接break
        break
    if maxindex != i:
        b[i],b[maxindex] = b[maxindex],b[i]
    if i == minindex:
        minindex = maxindex
    if minindex != -i-1 and b[minindex] != b[-i-1]:  # 索引不同且值不同
        b[-i-1],b[minindex] = b[minindex],b[-i-1]
print(b)
# 0001.abcc...  生成100项,左侧为顺序四位数字,不够补零,右侧为10位随机小写字母
import string
import random
a = string.ascii_lowercase
s1 = ''.join(string.ascii_lowercase[random.randint(0,25)] for i in range(10)) 
s2 = ''.join(chr(random.randint(97,122)) for i in range(10))
s3 = ''.join(random.choice(string.ascii_lowercase) for i in range(10))
s4 = ''.join(random.sample(string.ascii_lowercase,10))
s5 = ''.join(random.choice(bytes(range(97,123)).decode()) for i in range(10))
['{:04}.{}'.format(i,''.join(string.ascii_lowercase[random.randint(0,25)] for j in range(10))) for i in range(1,101)]
##打印杨辉三角,前十行,格式化打印
# 逐行打印
triangle = [1]*10
for i in range(10):
    tmp = 1
    for j in range(1,i//2+1):
        triangle[j],tmp = triangle[j] + tmp,triangle[j]
        triangle[-j-10+i] = triangle[j]
    print('{:^40}'.format(' '.join('{:^3}'.format(i) for i in triangle[:i+1])))

# 得到总的列表一起打印
triangle = [[1],[1,1]]
for i in range(2,10):
    triangle.append([1])
    for j in range(1,i):
        triangle[i].append(triangle[i-1][j-1]+triangle[i-1][j])
    triangle[i].append(1)
#print(triangle)
[print('{:^40}'.format(''.join('{:^3} '.format(triangle[i][j]) for j in range(len(triangle[i]))))) for i in range(len(triangle))]

# 打印九九乘法表,列表解析式
[print('{}*{}={:<2} {}'.format(i,j,i*j,'\n' if i==j else ''),end='') for i in range(1,10) for j in range(1,i+1)]
[print(' '.join('{}*{}={:<2}'.format(i,j,i*j) for j in range(1,i+1))) for i in range(1,10)]
print('~~~~~~~~~~~~~~'*5)
[print('{:>63}'.format(' '.join('{}*{}={:<2}'.format(i,j,i*j) for j in range(i,10)))) for i in range(1,10)]

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值