阿摩線上測驗 登入

申論題資訊

試卷:98年 - 98 身心障礙特種考試_三等_資訊處理:程式語言#34576
科目:程式語言
年份:98年
排序:0

申論題內容

五、桌上有N本書成一疊,當閱讀其中某本書的時候,會逐本將壓在該本書上的書照順
序由上而下的移開,並且按照移開的順序先將它們放在旁邊,然後取走想要看的書;
當閱讀完畢以後,會將剛才移開的書逐本逆向放回,並且將看完的書本放在最上面,
例如桌上有五本書:
書本 1
書本 2
書本 3
書本 4
書本 5
經過閱讀"書本 3"後放回之最終書本狀態變成
書本 3
書本 2
書本 1
書本 4
書本 5
請撰寫一段程式執行以上工作,不限程式語言:(25 分)
輸入:一個初始書本序列和一個閱讀書之序列
輸出:最終的書本狀態

詳解 (共 1 筆)

詳解 提供者:hchungw
def read_book(books, book_to_read):
    # 找到要讀的書本位置
    index = books.index(book_to_read)
    
    # 將壓在該本書上的書移開,並按照順序放在旁邊
    temp_stack = books[:index]
    
    # 將想要看的書取出
    book = books.pop(index)
    
    # 閱讀完畢後,將書逆向放回
    books = temp_stack[::-1] + books
    
    # 將看完的書放在最上面
    books.insert(0, book)
    
    return books
# 主程式
if __name__ == "__main__":
    # 初始書本序列
    books = ["書本 1", "書本 2", "書本 3", "書本 4", "書本 5"]
    
    # 要閱讀的書本
    book_to_read = "書本 3"
    
    # 取得最終書本狀態
    final_books = read_book(books, book_to_read)
    
    # 輸出最終書本狀態
    print("最終的書本狀態:")
    for book in final_books:
        print(book)
程式解析
找到要讀的書本位置:
使用 index 函數找到需要閱讀的書本在序列中的位置。
將壓在該本書上的書移開:
將從頂部到該書本之間的書本移到一個臨時堆疊 temp_stack。
取出要讀的書本:
從原始序列中移除要讀的書本。
逆向放回書本:
將臨時堆疊中的書本逆向放回到原始序列中。
將讀過的書放在最上面:
最後將讀過的書本放在序列的最頂端。
這樣可以模擬書本的移動過程並得到最終的書本狀態。你可以修改 books 和 book_to_read 來測試不同的初始書本序列和閱讀順序。例如,輸入 "書本 3",輸出將是 "書本 3", "書本 2", "書本 1", "書本 4", "書本 5"。