python習題集3 for迴圈的使用

2021-10-08 03:25:28 字數 3137 閱讀 3200

1.列印以下圖形

* * * * *

* * * *

* * *

* **

for i in range(5, 0, -1):

print('*' * i)

2.列印以下圖形

* * * * *

* * * *

* * *

* **

for i in range(5, 0, -1):

print(('*' * i).rjust(5, ' '))

3.列印以下圖形

** *

* * *

* * * *

* * * * *

for i in range(1, 6, 1):

print(('*' * i).rjust(5, ' '))

4.列印出9x9乘法表

1x1=1

1x2=2 2x2=4

.....

1x9=9 .... 9x9=81

for i in range(1, 10):

for j in range(1, 10):

if i >= j:

print(f' * = ', end='\t')

print()

for i in range(1, 10):

for j in range(1, i + 1):

print(f' * = ', end='\t')

print()

5、求 0 -1 + 2 - 3 + 4 - 5 + 6 -7.... + 100

s = 0

for i in range(101):

if i % 2 == 0:

s = s + i

else:

s = s - i

print(s)

6、水仙花數:水仙花數是指乙個 n 位數 ( n 大於等於 3 ),它的每個位上的數字的 n 次冪之和等於它本身。

(例如:1的3次方 + 5的三次方 + 3三次方 = 153)。根據這個要求,列印所有三位數的水仙花數。

for n in range(100, 1000, 1):

a = n % 10

b = (n // 10) % 10

c = n // 100

if n == a ** 3 + b ** 3 + c ** 3:

print(n)

7、題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了乙個,第二天早上又將剩下的桃子吃掉一半,又多吃了乙個。

以後每天早上都吃了前一天剩下的一半零乙個。到第10天早上想再吃時,見只剩下乙個桃子了。求第一天共摘了多少。

程式分析:採取逆向思維的方法,從後往前推斷。

num = 1

for i in range(1, 10):

print(num)

num = (1 + num) * 2

print(num)

另一種方式

peach = [1]

for i in range(9):

peach.reverse()

print(peach)

8.練習:將列表[45,23,2,5,3,2,6,45,43,21,66,2,3,2]進行從小到大排序,不能用sort()函式,思路:

新建乙個列表的形式實現

li = [45, 23, 2, 5, 3, 2, 6, 45, 43, 21, 66, 2, 3, 2]

line =

for i in range(len(li) - 1): # n-1趟排序

for j in range(len(li) - 1 - i):

if li[j] < li[j + 1]:

li[j], li[j + 1] = li[j + 1], li[j]

print(line)

直接使用排序方法轉化

for i in range(len(li) - 1):#氣泡排序

for j in range(len(li) - i - 1):

if li[j] > li[j + 1]:

li[j + 1], li[j] = li[j], li[j + 1]

for i in range(1, len(arr)):#for+while實現插入排序

key = arr[i]

j = i - 1

while j >= 0 and key < arr[j]:

arr[j + 1] = arr[j]

j -= 1

arr[j + 1] = key

for i in range(1, len(li)):#兩個for實現插入排序

for j in range(i, 0, -1):

if li[j] < li[j - 1]:

li[j], li[j - 1] = li[j - 1], li[j]

def select_sort_******(li):  # 選擇排序演算法簡單版

li_new = # 新建乙個列表

for i in range(len(li)):

min_val = min(li) # 獲取無序區列表最小值

li.remove(min_val) # 無序區列表刪除最小值

print(li_new)

def select_sort(li):

for i in range(len(li) - 1): # i是第幾趟

min_loc = i # i是無須區第乙個數

for j in range(i + 1, len(li)): # range(i + 1, len(li))代表除i外剩下的無序數

if li[j] < li[min_loc]: # 將無序區剩下的數與第乙個無序數i比較

min_loc = j # 獲取無序區列表最小值下標

li[i], li[min_loc] = li[min_loc], li[i] # 交換最小值

print(li)

Python習題集(四)

如果乙個 3 位數等於其各位數字的立方和,則稱這個數為水仙花數。例如 153 1 3 5 3 3 3,因此 153 就是乙個水仙花數 那麼問題來了,求1000以內的水仙花數 3位數 int轉字串序列,獲取到每一位數 呼叫math.pow函式求立方和 三個數字立方和相加 lists for i in ...

Python習題集(十二)

請寫乙個函式find odd,引數是1個列表,請返回該列表 現奇數次的元素 比如 find odd 1,1,2,2,5,2,4,4,1,2,5 1 find odd 20,1,1,2,2,3,3,5,5,4,20,4,5 5 find odd 10 10 迴圈列表 呼叫列表內建統計函式計算當前元素出...

Python習題集(十六)

寫乙個函式replace,該函式引數是兩個字串,第乙個引數給出乙個源,第二個引數是指定範圍。要求該函式將 第乙個引數裡面的字串中 落在第二個引數指定範圍內的字串替換為 號 比如replace abcdef c e ab f replace rattle r z a le replace micros...