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、輸入一個字串返回滿足以下條件的字串
- 如果字串長度大於 3,新增 ‘ing’ 到字串的末尾
- 如果字串是以 ‘ing’ 結尾,就在末尾新增 ‘ly’
- 如果字串長度小於 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)
複製程式碼