python实战训练---基础练习(8)

算素数

题目 求100之内的素数。

程序分析 用else执行for循环的奖励代码(如果for是正常完结,非break)。

lo=int(input('下限:'))
hi=int(input('上限:'))
for i in range(lo,hi+1):
    if i > 1:
        for j in range(2,i):
            if (i % j) == 0:
                break
        else:
            print(i)
下限:100
上限:200
101
103
107
109
113
127
131
137
139
149
151
157
163
167
173
179
181
191
193
197
199

排序

题目:
对10个数进行排序。

程序分析 同实例005。

raw=[]
for i in range(10):
    x=int(input('int%d: '%(i)))
    raw.append(x)
    
for i in range(len(raw)):
    for j in range(i,len(raw)):
        if raw[i]>raw[j]:
            raw[i],raw[j]=raw[j],raw[i]
print(raw)

矩阵对角线之和

题目:
求一个3*3矩阵主对角线元素之和。

程序分析 无。

mat=[[1,2,3],
     [3,4,5],
     [4,5,6]
    ]
res=0
for i in range(len(mat)):
    res+=mat[i][i]
print(res)
11

有序列表插入元素

题目:
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

程序分析 :
首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。

lis=[1,10,100,1000,10000,100000]
n=int(input('insert a number: '))
lis.append(n)
for i in range(len(lis)-1):
    if lis[i]>=n:
        for j in range(i,len(lis)):
            lis[j],lis[-1]=lis[-1],lis[j]
        break
print(lis)
insert a number: 500
[1, 10, 100, 500, 1000, 10000, 100000]

逆序列表

题目 :将一个数组逆序输出。

程序分析 依次交换位置,或者直接调用reverse方法。

lis=[1,10,100,1000,10000,100000]
for i in range(int(len(lis)/2)):
    lis[i],lis[len(lis)-1-i]=lis[len(lis)-1-i],lis[i]
print('第一种实现:')
print(lis)
lis=[1,10,100,1000,10000,100000]
print('第二种实现:')
lis.reverse()
print(lis)
第一种实现:
[100000, 10000, 1000, 100, 10, 1]
第二种实现:
[100000, 10000, 1000, 100, 10, 1]

猜你喜欢

转载自blog.csdn.net/xdc1812547560/article/details/107588015