1.學生成績
這是乙個判斷學生成績是否達標的程式,要求輸入學生數量,以及各個學生物理、數學、歷史三科的成績,如果總成績小於 120,程式列印 「failed」,否則列印 「passed」。
name 和 marks 是變數,name 用來儲存學生的名稱,marks 是個列表,用來儲存輸入的學生的成績資料。#!/usr/bin/env python3
n =int
(input
("enter the number of students: "))
data =
# 用來儲存資料的字典變數
subjects =
('physics'
,'maths'
,'history'
)# 所有科目
for i in
range(0
, n)
: name =
input
('enter the name of the student {}: '
.format
(i +1)
)# 獲得學生名稱
marks =
for x in subjects:
int(
input
('enter marks of {}: '
.format
(x))))
# 獲得每一科的分數
data[name]
= marks
for x, y in data.items():
total =
sum(y)
("{}'s total marks {}"
.format
(x, total)
)if total <
120:
(x,"failed :("
)else
(x,"passed :)"
)
data 是個字典,字典的鍵值對中,鍵指的是 name 的值,值指的是 marks 的值。因此會使用 data[name] = marks 將學生資料存入到 data 字典。
最後通過 for 迴圈遍歷字典,x 為學生的 name,y 為學生成績列表 marks,sum() 函式會將傳入的列表進行加和。
2.計算矩陣的乘積
這個例子裡我們計算兩個矩陣的 hadamard 乘積。要求輸入矩陣的行/列數(在這裡假設我們使用的是 n × n 的矩陣)。
#!/usr/bin/env python3
n =int
(input
("enter the value of n: "))
("enter values for the matrix a"
)a =
for i in
range
(n):
[int
(x)for x in
input()
.split()]
("enter values for the matrix b"
)b =
for i in
range
(n):
[int
(x)for x in
input()
.split()]
)c =
for i in
range
(n):
[a[i]
[j]* b[i]
[j]for j in
range
(n)]
("after matrix multiplication"
("-"*7
* n)
for x in c:
for y in x:
(str
(y).rjust(5)
, end=
' ')
print()
("-"*7
* n)
這裡我們使用了幾次列表推導式。[int(x) for x in input().split()]首先通過input()獲得使用者輸入的字串,再使用split()分割字串得到一系列的數字字串,然後用int()從每個數字字串建立對應的整數值。我們也使用了[a[i][j] * b[i][j] for j in range(n)]來得到矩陣乘積的每一行資料。
資料結構例題2
1.設計求結點在二叉排序樹中層次的演算法。int bstsearch bstree bst,bstnode k if p null return 0 return n 1 2.設關鍵字序列 k1,k2,kn 1 是堆,設計演算法將關鍵字序列 k1,k2,kn 1,x 調整為堆。void adjust...
北大資料結構經典例題
資料結構練習題1 1 編一c程式,它能根據讀入的資料構造有向圖g,並輸出g的鄰接矩陣及g的拓撲序列。圖的輸入形式為 i0 j0 i1 j1 i2 j2 im jm 1 1 1,1為有向邊輸入結束標記,其餘的值都 0且。n,它們都是整數,n是有向圖g的頂點個數且40 n 0,頂點名字依次是v0,v1,...
資料結構折半查詢例題 資料結構查詢習題及答案
第九章 查詢一 選擇題1.若查詢每個記錄的概率均等,則在具有 n個記錄的連續順序檔案中採用順序查詢法查詢一 個記錄,其平均查詢長度 asl為 a n 1 2 b.n 2 c.n 1 2 d.n 2.下面關於二分查詢的敘述正確的是 a.表必須有序,表可以順序方式儲存,也可以鍊錶方式儲存 c.表必須有序...