1. 程式人生 > >python基礎練習25-39

python基礎練習25-39

26.求100之內的素數。

for i in range(2,101):
    for j in range(2,i):
        if i % j==0:
            break
    else:
        print(i)

27.對10個數進行排序。這裡用的是冒泡法

if __name__ == "__main__":
    N = 10
    # input data
    print ('請輸入10個數字:\n')
    l = []
    for i in range(N):
        l.append(int(input('輸入一個數字:\n')))
    print()
    for i in range(N):
        print(l[i])
    print()
 
    # 排列10個數字
    for i in range(N - 1):
        min = i
        for j in range(i + 1,N):
            if l[min] > l[j]:min = j
        l[i],l[min] = l[min],l[i]
    print ('排列之後:')
    for i in range(N):
        print (l[i])

28.求一個3*3矩陣主對角線元素之和。

import numpy as np

a=np.random.randint(1,100,9).reshape(3,3)
print(a)
(m,n)=np.shape(a)
sum=0
for i in range(m):
    for j in range(n):
        if i==j:
            sum+=a[i,j]
print(sum)

29.兩個 3 行 3 列的矩陣,實現其對應位置的資料相加,並返回一個新矩陣:(使用numpy更快)

x = [[12,7,3],
        [4,5,6],
        [7,8,9]]

y = [[5,8,1],
        [6,7,3],
        [4,5,9]]
z= []
for i in range(3):
    z.append([])
for i in range(3):
    for j in range(3):
        z[i].append(x[i][j]+y[i][j])
print(z)

30.求輸入數字的平方,如果平方運算後小於 50 則退出。

a=1
while a:
    n=int(input('num:'))
    if n*n<50:
        a=0
        print(n*n)
    else:
        a=1
        print(n*n)

31.楊輝三角

l=[1]
for i in range(10):
   for k in l:
      print(k,end='\t')
   print('\n ')
   l1=l[:]
   l1.insert(0,0)
   l1.append(0)
   l2=[]
   for i in range(len(l1)-1):
      l2.append(l1[i]+l1[i+1])
   l=l2[:]

32.輸入陣列,最大的與第一個元素交換,最小的與最後一個元素交換,輸出陣列。(numpy中的argmax,argmin更好用)

for i in range(len(a)):
    if a[i] == max(a):
        a[0], a[i] = a[i], a[0]
for i in range(len(a)):
    if a[i] == min(a):
        a[i], a[len(a)-1]=a[len(a)-1], a[i]

33.有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最後留下的是原來第幾號的那位。

if __name__ == '__main__':
    nmax = 50
    n = int(raw_input('請輸入總人數:'))
    num = []
    for i in range(n):
        num.append(i + 1)
 
    i = 0
    k = 0
    m = 0
 
    while m < n - 1:
        if num[i] != 0 : k += 1
        if k == 3:
            num[i] = 0
            k = 0
            m += 1
        i += 1
        if i == n : i = 0
 
    i = 0
    while num[i] == 0: i += 1
    print num[i]

34.海灘上有一堆桃子,五隻猴子來分。第一隻猴子把這堆桃子平均分為五份,多了一個,這隻猴子把多的一個扔入海中,拿走了一份。第二隻猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五隻猴子都是這樣做的,問海灘上原來最少有多少個桃子?

if __name__ == '__main__':
    i = 0
    j = 1
    x = 0
    while (i < 5) :
        x = 4 * j
        for i in range(0,5) :
            if(x%4 != 0) :
                break
            else :
                i += 1
            x = (x/4) * 5 +1
        j += 1
    print x

35.編寫一個函式,輸入n為偶數時,呼叫函式求1/2+1/4+...+1/n,當輸入n為奇數時,呼叫函式1/1+1/3+...+1/n

def sumfr(n):
    ls = [1/i for i in range(n,0,-2)]
    return sum(ls)

36.求0—7所能組成的奇數個數。

if __name__ == '__main__':
    sum = 4
    s = 4
    for j in range(0,7):
        print (sum)
        if j <= 0:
            s *= 7
        else:
            s *= 8
        sum += s
    print ('sum = %d' % sum)

37.輸入一個奇數,然後判斷最少幾個 9 除於該數的結果為整數。

x=int(input('sum:'))
a=9
n=1
while 1:
    if a%x==0:
        break
    else:
        a=a*10+9
        n+=1
print(n)

38.讀取7個數(1—50)的整數值,每讀取一個值,程式打印出該值個數的*

for i in range(7):
    a=int(input('num:'))
    if a>1 and a<50:
        print(a*'*')

39某個公司採用公用電話傳遞資料,資料是四位的整數,在傳遞過程中是加密的,加密規則如下:每位數字都加上5,然後用和除以10的餘數代替該數字,再將第一位和第四位交換,第二位和第三位交換。

b=[]
a=[2,3,1,4]
a[0], a[3]=a[3], a[0]
a[2], a[1]=a[1],a[2]
for i in range(4):
    b.append([])
    for j in range(4):
        b[i]=(a[i]+5)%10
        
print(b)