05python的相關練習

weixin_34321977發表於2018-07-21

1.把A列表的第三到第六位之間的元素刪除。

# 把A列列表的第三到第六位之間的元素刪除。
A = [i for i in range(1,20)]   #產生一個列表
print("刪除前:",A)
for i in range(2):        #思路:刪除當前下標的元素後,後一個元素的下標變為當前下標,再次刪除就行了
    del A[3]
    print("被刪除的元素:",A[3])
print("刪除後:",A)

執行結果:
刪除前: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
被刪除的元素: 5
被刪除的元素: 6
刪除後: [1, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]


2.已知A列列表,B列列表,定義⼀一個列列表C,要求C包含A,B陣列中的資料(無重複值)。

# 已知A列列表,B列列表,定義⼀一個列列表C,要求C包含A,B陣列中的資料(無重複值)。
A = [i for i in range(1,20)]
B = [i for i in range(10,30)]
C = A+B               # 先把兩個列表合併在一起   然後再去去除重複的元素

# 去除重複的元素
i = 0    # i表示從左邊取出元素的下標
while i <len(C):
    for x in range(len(C)-1,i,-1):    # x 表示從列表右邊取出元素的下標,從右邊一直取到下標(i-1)
        if C[i] == C[x]:            # 兩個元素相同 刪除右邊的元素,保留左邊的元素。
            del C[x]
    i += 1
print("去除重複元素後的C列表:",C)
執行結果:
去除重複後的C列表: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 
                 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]


3.求s=a+aa+aaa+aaaa+aa...a的值,其中a是⼀一個數字。例例如2+22+222+2222+22222(此時共有5個數相 加),⼏幾個數相加有鍵盤控制。

# 求s=a+aa+aaa+aaaa+aa...a的值,其中a是⼀一個數字。例例如2+22+222+2222+22222(此時共有5個數相 加),⼏幾個數相加有鍵盤控制。
while True:
    n = int(input("請輸入N的值:"))
    a = int(input("請輸入a的值:"))
    if 0 <= a <= 9:                 # a的值不能超過9
        a = str(a)
        s = 0
        for i in range(1, n+1):

            number = a * i
            print(number)
            s += int(number)
        print("他們的和是:", s)
        break

    else:
        print("輸入的a值有問題 請重新輸入:")
執行結果:
請輸入N的值:9
請輸入a的值:12
輸入的a值有問題 請重新輸入:
請輸入N的值:6
請輸入a的值:1
1
11
111
1111
11111
111111
他們的和是: 123456


3. 列印圖形1

n = 4
@
@@
@@@
@@@@

n = int(input("請輸入N的值:"))
for i in range(n):
    for x in range(i+1):
        print("@",end = "")
    print("")
執行結果:
請輸入N的值:6
@
@@
@@@
@@@@
@@@@@
@@@@@@


4.列印圖形2

n = int(input("請輸入N的值:"))

# 列印正三角
for i in range(1,n+1):      # i 控制列印的行數
    for x in range(n-i):    #第一(i)排列印n-1(n-i)個空格i,第二行列印
        print(" ",end="")   #控制列印空格

    for y in range(i):
        print("@ ",end="")

    print("")               #列印完一行就換行
print("正三角列印完畢!")


#列印倒三角:
for i in range(n):      # i 控制列印的行數

    for y in range(n-i):
        print("@ ",end="")

    print("")               #列印完一行就換行
print("倒三角列印完畢!")
執行結果:
請輸入N的值:5
    @ 
   @ @ 
  @ @ @ 
 @ @ @ @ 
@ @ @ @ @ 
正三角列印完畢!
@ @ @ @ @ 
@ @ @ @ 
@ @ @ 
@ @ 
@ 
倒三角列印完畢


5. 輸入兩個正整數m和n,求其最大公約數和最小公倍數。

# 輸⼊入兩個正整數m和n,求其最⼤大公約數和最⼩小公倍數
m = int(input("請輸入m的值:"))
n = int(input("請輸入n的值:"))

if m<n:
    temp = m
    m = n       #交換兩數的值    #交換兩個數的值,是為了固定大的數字在前,小的數字在後,方便後面寫程式碼
    n = temp

for i in range(n,0,-1):    #思路:約數從最大的開始找起
    if m % i == 0 and n % i == 0:
        print("%d與%d的最大公約數是:%d"%(m,n,i))
        print("%d與%d的最小公倍數是:%d" % (m, n, m*n/i))
        break        #找到的第一個就是最大公約數,後面的不用再繼續。
執行結果:
請輸入m的值:36
請輸入n的值:96
96與36的最大公約數是:12
96與36的最小公倍數是:288


6. ⼀個數如果恰好等於它的因子之和,這個數就稱為 "完數 "。例如6=1+2+3.程式設計 找出1000以內的所有 完數

# ⼀一個數如果恰好等於它的因⼦子之和,這個數就稱為 "完數 "。例例如6=1+2+3.程式設計 找出1000以內的所有 完數
number = []
for i in range(1,1001):
    for x in range(1,i):        # x 表示i這個數的一個因子
        if i % x == 0:
            number.append(x)    #把x加入到一個列表中,方便後面求和。

    s = 0                       # s 用於儲存因子的和
    for y in range(len(number)): # 把因子依次取出來並且相加
        s += number[y]
    if s == i:
        print("找到了一個完數:",i,end=" = ")
        for n in range(len(number)):        # 為了列印時好看設定的程式碼 可以刪除
            if n==len(number)-1:
                print(number[n])
            else:
                print(number[n],end="+")
        print ("")
    number = []             #每一個主迴圈末尾  儲存因子的列表要清空  否則不能正確儲存下一個數的因子
執行結果:
找到了一個完數: 6 = 1+2+3
找到了一個完數: 28 = 1+2+4+7+14
找到了一個完數: 496 = 1+2+4+8+16+31+62+124+248


7. 輸出9*9口訣

# 列印九九乘法表
for i in range(1,10):
    for x in range(1,i+1):          # 太簡單 就不解釋了
        print("%s×%s=%s\t"%(x,i,x*i),end="")
    print("")
執行結果:
1×1=1   
1×2=2   2×2=4   
1×3=3   2×3=6   3×3=9   
1×4=4   2×4=8   3×4=12  4×4=16  
1×5=5   2×5=10  3×5=15  4×5=20  5×5=25  
1×6=6   2×6=12  3×6=18  4×6=24  5×6=30  6×6=36  
1×7=7   2×7=14  3×7=21  4×7=28  5×7=35  6×7=42  7×7=49  
1×8=8   2×8=16  3×8=24  4×8=32  5×8=40  6×8=48  7×8=56  8×8=64  
1×9=9   2×9=18  3×9=27  4×9=36  5×9=45  6×9=54  7×9=63  8×9=72  9×9=81  


8.一個5位數,判斷它是不是迴文數。即12321是回⽂文數,個位與萬位相同,十位與千位相同。

while True:
    n = input("請輸入一位五位整數:")
    if len(n) == 5 :                        #太簡單 就不解釋了
        if n[0]==n[-1] and n[1]==n[-2]:
            print("%s是一個迴文數" % (n))
            break

        else:
            print("%s不是一個迴文數"%(n))
            break
    else:
        print("輸入的數不是五位數,請重新輸入")
執行結果:
請輸入一位五位整數:1235
輸入的數不是五位數,請重新輸入
請輸入一位五位整數:12345
12345不是一個迴文數


9.列印圖形(菱形)

# 列印圖形(菱形)
n = int(input("請輸入N的值:"))            #整體思路:將上面列印正三角的程式碼,後面加上列印倒的正三角的程式碼就行了
for i in range(1,n+1):      # i 控制列印的行數
    for x in range(n-i):    #第一(i)排列印n-1(n-i)個空格i,第二行列印
        print(" ",end="")   #控制列印空格

    for y in range(i):
        print("@ ",end="")
    print("")
for i in range(1, n):  # i 控制列印的行數for x in range(i):  # 第一(i)排列印n-1(n-i)個空格i,第二行列印
    for x in range(i):
        print(" ", end="")  # 控制列印空格

    for y in range(n-i):
        print("@ ", end="")
    print("")               #列印完一行就換行
print("列印完畢!")
執行結果:
請輸入N的值:7
      @ 
     @ @ 
    @ @ @ 
   @ @ @ @ 
  @ @ @ @ @ 
 @ @ @ @ @ @ 
@ @ @ @ @ @ @ 
 @ @ @ @ @ @ 
  @ @ @ @ @ 
   @ @ @ @ 
    @ @ @ 
     @ @ 
      @ 
列印完畢!


10.輸入⼀行字元,分別統計出其中英文字母、空格、數字和其它字元的個數。

str1 = input("請隨便輸入一些字元吧:")     
chinese = 0
english = 0              # 整體思路:用unicode編碼來判斷取出的字元是什麼屬性。
space = 0
other =0
number = 0
for i in str1:
    if 0x4e00 <= ord(i) <= 0x9fbf:    #中文的編碼在這個區間
        chinese += 1
    elif 0x0041 <= ord(i) <= 0x005a or 0x0061 <= ord(i) <= 0x007a: #英文字母的編碼在這個區間
        english += 1
    elif 0x0030 <= ord(i) <= 0x0039:      # 數字的編碼在這個區間
        number += 1
    elif ord(i) == 0x00a0 or ord(i) == 0x0020:    #空格的編碼是這個
        space += 1
    else:            #剩下的就是其他的字元了
        other += 1
print("您輸入的字串中:漢字有%d個,數字有%d個,字母有%d個,空格有%d個,其他字元有%d個"%(chinese,number,english,space,other))
執行結果:
請隨便輸入一些字元吧:123   一二三,。ACD、、】abc
您輸入的字串中:漢字有3個,數字有3個,字母有6個,空格有3個,其他字元有5個

相關文章