2021年3月26日 星期五

Python 測驗題(三)

 第七題

請撰寫一程式,輸入並建立兩組數組,各以-9999為結束點(數組中不包含-9999)。將此兩數組合併並從小到大排序之,顯示排序前的數組和排序後的串列。

主要是 陣列的合併 List = List1+List2

程式如下 ,這題寫了二種方式

listA=list()
listB=list()
           
print("建立第一個列表")

while True:     #-9999 結束
    val=int(input("請輸入一個數字 (-9999結束輸入) :"))
    if val==-9999:
        break
    else:
        listA.append(val)

print("建立第二個列表")

while True:     #-9999 結束
    val=int(input("請輸入一個數字 (-9999結束輸入) :"))
    if val==-9999:
        break
    else:
        listB.append(val)

listC=listA + listB

print("原始數列 : " , listC)
x=sorted(listC)
print("從小到大排序 :" ,x)

仔細看,有些程式碼重複了,可以把重複的程式獨立出來,寫成副程式 Function ,如下

listA=list()
listB=list()

def list_Append(listX):
    while True:     #-9999 結束
        val=int(input("請輸入一個數字 (-9999結束輸入) :"))
        if val==-9999:
            break
        else:
            listX.append(val)
    return listX             

print("建立第一個列表")
listA=list_Append(listA)

print("建立第二個列表")
listB=list_Append(listB)

listC=listA + listB

print("原始數列 : " , listC)
x=sorted(listC)
print("從小到大排序 :" ,x)

輸出如下

建立第一個列表
請輸入一個數字 (-9999結束輸入) :9
請輸入一個數字 (-9999結束輸入) :0
請輸入一個數字 (-9999結束輸入) :-1
請輸入一個數字 (-9999結束輸入) :3
請輸入一個數字 (-9999結束輸入) :8
請輸入一個數字 (-9999結束輸入) :-9999
建立第二個列表
請輸入一個數字 (-9999結束輸入) :28
請輸入一個數字 (-9999結束輸入) :16
請輸入一個數字 (-9999結束輸入) :39
請輸入一個數字 (-9999結束輸入) :56
請輸入一個數字 (-9999結束輸入) :78
請輸入一個數字 (-9999結束輸入) :88
請輸入一個數字 (-9999結束輸入) :-9999
原始數列 :  [9, 0, -1, 3, 8, 28, 16, 39, 56, 78, 88]   
從小到大排序 : [-1, 0, 3, 8, 9, 16, 28, 39, 56, 78, 88]

第八題

請撰寫一程式,要求使用者輸入一字串,顯示該字串每個字元的對應ASCII碼及其總和。
主要是字串字元的處理,放進陣列中去加總即可
ord(字元) : 轉換ASCII

程式如下

str_val=""
ascii_val=list()

str_val=input("請輸入一個字串: ")
x=len(str_val)
for i in range(x):
    y=ord(str_val[i])
    ascii_val.append(y)
    print("ASCII code for " , "'", str_val[i],"' is ", y )

print("每個字元ASCII碼的總和 :", sum(ascii_val))

輸出結果

請輸入一個字串: Kingdom
ASCII code for  ' K ' is  75 
ASCII code for  ' i ' is  105
ASCII code for  ' n ' is  110
ASCII code for  ' g ' is  103
ASCII code for  ' d ' is  100
ASCII code for  ' o ' is  111
ASCII code for  ' m ' is  109
每個字元ASCII碼的總和 : 713

第九題

請撰寫一程式,讀取read.txt的內容(內容為數字,以空白分隔)並將這些數字加總,接著再顯示檔案內容和加總的結果。檔案讀取完成後要關閉。

用 with open() as file 來開啟檔案

read.txt 內容存放如下,故意放進二行數據

1 2 3 99 54 36 97
10 20 30 40 50 60 70 80 90

程式如下

val=list()

with open("read.txt" , mode="r",encoding="utf-8") as file:
    for line in file:
        print (line.split())
        val=val+line.split()

sum_val = list(map(int, val))
print(sum(sum_val))

輸出結果

['1', '2', '3', '99', '54', '36', '97']
['10', '20', '30', '40', '50', '60', '70', '80', '90']
742


沒有留言: