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)]



猜你喜欢

转载自blog.csdn.net/qq_33287645/article/details/79822066