Python 練習題

蔣志碧發表於2018-07-23

Python 練習題

1、列印從1到100的數字中所有能被3整除,又能被5整除的數字有哪些

#列印從1到100的數字中所有能被3整除,又能被5整除的數字有哪些
for i in range(1,101):
    if(i % 3 == 0 and i % 5 == 0):
        print(i)

'''
15
30
45
60
75
90
'''
複製程式碼

2、輸入一個字串返回滿足以下條件的字串

  1. 如果字串長度大於 3,新增 ‘ing’ 到字串的末尾
  2. 如果字串是以 ‘ing’ 結尾,就在末尾新增 ‘ly’
  3. 如果字串長度小於 3,返回原字串
s = input()

if len(s) >= 3:
    if s.endswith("ing"):
        s += "ly"
    else:
        s += "ing"
else:
    pass

print(s)
複製程式碼

3、判斷迴文

迴文:62426 為迴文數字

s = input()

#方法一 while 迴圈
l = len(s)
count = 1
i = 0
while i <= l/2:
    if s[i] == s[l - i -1]:
        count = 1
        i = i + 1 
    else:
        count = 0
        break
        
if count == 1:
    print("yes")
else:
    print("no")
    
    
#方法二  reversed 函式
a = reversed(list(s))
if list(a) == list(s):
    print("yes")
else:
    print("no")
複製程式碼

4、建立一個 python 檔案,接收 2 個引數(均為數字)並找出兩個數字之間的所有素數(即只能被 1 和自身整除的數)

import math
import sys

'''
素數:除了 1 和它本身以外,不能被其他整數整除。
1 不是素數,最小的素數是 2,只要判斷 [2,N] 以內的數是否為素數。
'''
def prime(n):
    if n <= 1:
        return 0
    for i in range(2, n):
        if n % i == 0:
            return 0
    return 1

'''
優化:
思考除了 2 以外,其餘的偶數都不是素數,所以我們的範圍縮小至 [2,√n+1] 內排除一半的計算量。
再看奇數,1 不是素數,從 3 開始,除了 3 以外,其餘能被 3 整除的都是合數,那麼在剩餘的計算量中又排除了 1/3,
再看 5,除了 5 以外,其餘能被 5 整除的都是合數,又在剩餘的基礎上排除了 1/5,加起來,一共在 [2,√n+1] 剩餘範圍內排除了近 3/4 的計算量。
'''
def prime1(n):
    if n % 2 == 0:
        return n == 2
    if n % 3 == 0:
        return n == 3
    if n % 5 == 0:
        return n == 5
    
    for i in range(7, int(math.sqrt(n))+1, 2): #只考慮奇數作為可能因子
        if n % i == 0:
            return 0
    return 1

if __name__ == "__main__":
    m = int(input())
    n = int(input())
    
    big = m
    small = n
    if m >= n:
        big = m
        small = n
    else:
        big = n
        small = m
    
    for i in range(small, big+1):
        if prime1(i):
            print(i)
複製程式碼

5、落球計算

一球從 100 米高度自由落下,假設每次落地後反跳回原高度的一半,再落下,再彈起,請問第 6 次落地後會彈起多少米?

請分別使用 for 迴圈與 while 迴圈,並使用 break 與 continue 流程控制關鍵字

s = 100
i = 1
while i <= 6:
    if s >= 0:
        s = s/2
        i = i+1
        continue
    else:
        break
print(s)

for i in range(1,7):
    s = s/2
print(s)
複製程式碼

6、輸入一個字串返回滿足以下條件的字串,找出與字串的第一個字母相同的字母,把它們替換成 '*',除了第一個字母本身以外

例如: 輸入'babble', 返回 'ba**le'

oldStr = input()
newStr = ""

for i,curS in enumerate(oldStr):
    if curS == oldStr[0] and i != 0:
        newStr += "*"
    else:
        newStr += curS

print(newStr)
複製程式碼

相關文章