# 學校的作業題:輸入兩個正整數,當作串列的 列數 與 行數 ,每個位置存放內容為那個位置本身的 "行數索引值" 減去 "列數索引值" 的結果。
# 這題好是個結合 巢狀串列(2D list)+ 索引操作 的超實用練習 👏
# 我們來逐步拆解 → 再寫出完整程式!
# 🎯 題目重點解析
# ✅ 使用者輸入:「列數(rows)」和「行數(cols)」
# ✅ 建立一個二維串列
# ✅ 每個位置的值 = 行索引 j - 列索引 i
# 你可以把這個當作一個矩陣運算,例如:
# 輸入:
rows = 3
cols = 4
# 結果應該是:
[
[ 0, 1, 2, 3], # row 0 → j-i = 0-0, 1-0, 2-0, 3-0
[-1, 0, 1, 2], # row 1 → j-i = 0-1, 1-1, ...
[-2,-1, 0, 1] # row 2 → j-i = ...
]
# ✅ 解法 1:巢狀迴圈 + .append()
rows = int(input("請輸入列數(rows): "))
cols = int(input("請輸入行數(cols): "))
matrix = []
for i in range(rows):
row = []
for j in range(cols):
row.append(j - i)
matrix.append(row)
# 顯示結果
for r in matrix:
print(r)
# ✅ 解法 2:串列推導式(List Comprehension)
rows = int(input("請輸入列數(rows): "))
cols = int(input("請輸入行數(cols): "))
matrix = [[j - i for j in range(cols)] for i in range(rows)]
for r in matrix:
print(r)
# 💡 額外補充:若要輸出更像表格?
# 可以這樣寫:
for row in matrix:
print(" ".join(f"{x:3}" for x in row))
# 會輸出類似這樣的排版:
0 1 2 3
-1 0 1 2
-2 -1 0 1