本週有所收穫的題目:

第一題:

第4章-17 水仙花數(20 分) (20 分) 水仙花數是指一個N位正整數(N≥3),它的每個位上的數字的N次冪之和等於它本身。

例如:153=1×1×1+5×5×5+3×3×3。

本題要求編寫程式,計算所有N位水仙花數。

輸入格式: 輸入在一行中給出一個正整數N(3≤N≤5)

輸出格式: 按遞增順序輸出所有N位水仙花數,每個數字佔一行。

我的程式碼:

n = int(input())
print(10 ** n)
for i in range(10 ** (n-1), 10 ** n):
hold = i
s = 0
for x in range(n):
s += int((hold % 10) ** n)
hold = int(hold / 10)
if hold < 1:
break
if s == i:
print(i)

別人的程式碼:

import math
n=int(input())
for i in range(int(math.pow(10,n-1)),int(math.pow(10,n))):
sum = 0
j=i
while(j>=1):
sum=sum+math.pow(j%10,n)
j=j//10
if(sum==i):
print('{:d}'.format(i))

學到了:

1.強制轉換為int:

j=j//10

兩個‘/’可以使除後的數成為整數。

我一開始只用了一個斜槓,一直無法得出正確結果,因為算出來的數帶有小數。

第二題

第4章-19 矩陣運算 (20 分)

給定一個n×n的方陣,本題要求計算該矩陣除副對角線、最後一列和最後一行以外的所有元素之和。副對角線為從矩陣的右上角至左下角的連線。

輸入格式: 輸入第一行給出正整數n(1<n≤10);隨後n行,每行給出n個整數,其間以空格分隔。

輸出格式: 在一行中給出該矩陣除副對角線、最後一列和最後一行以外的所有元素之和。

我的程式碼:

ls = []
n = int(input())
y = n - 1
s = 0
for i in range(n):
ls.append(input().split())
for x in range(n):
for y in range(n):
ls[x][y] = int(ls[x][y])
j = n - 1
for x in range(n - 1):
for y in range(n - 1):
if y != j:
s += ls[x][y]
j -= 1
print(s)

別人的程式碼:

N = int(input())
t = []
for i in range(N):
t.append(list(map(int,input().split())))
res = 0
for i in range(N-1):
for j in range(N-1):
if i+j!=N-1:
res += t[i][j]
print(res)

我學到了:

對於矩陣形式的資料輸入,可以先創一個空列表,然後通過

t.append(list(map(int,input().split())))

將資料輸入儲存為二維陣列的形式

本週刷題情況:

這周因為事情有點多以及自己的懶惰,只寫了五道題,我要好好反省自己5555