阿摩線上測驗 登入

申論題資訊

試卷:97年 - 097年身心障礙人員4等_資訊處理#37700
科目:程式設計
年份:97年
排序:0

申論題內容

二、請寫一段程式可接收由鍵盤輸入之一行算數四則運算之式子,例如 5*3+8/2-7,並將 其運算結果顯示在螢幕上。(40 分) 附註說明: ⑴此行算數四則運算式子之數字將只會是正整數。 ⑵此行算數四則運算式子之運算符號將只會有+(加)、-(減)、*(乘)、/(除)。 ⑶此行算數四則運算式子不會有括號。 ⑷此行算數四則運算式子之長度將不超過 25。

詳解 (共 1 筆)

詳解 提供者:hchungw
如 5*3+8/2-7,並計算其結果顯示在螢幕上,我們可以使用 Python 的 eval 函數來實現這個功能。eval 函數可以將字符串當作 Python 表達式來評估執行。但是請注意,使用 eval 函數執行來自用戶的輸入可能會帶來安全風險,因為它可以執行任何Python代碼。在這個例子中,我們將限制輸入僅為算術表達式,並假設它是在受信任的環境下使用。
下面是實現該功能的 Python 程式碼:

def calculate_expression(expression):
    # 檢查表達式是否僅包含允許的字符
    if not all(char.isdigit() or char in "+-*/" for char in expression.replace(' ', '')):
        return "錯誤:表達式包含不允許的字符。"
    try:
        # 使用 eval 函數計算表達式
        result = eval(expression)
        return f"結果是:{result}"
    except Exception as e:
        return f"錯誤:無法計算表達式。原因:{str(e)}"
# 從鍵盤接收輸入
expression = input("請輸入一行算數四則運算之式子(例:5*3+8/2-7):")
# 印出運算結果
print(calculate_expression(expression))
程式功能:
首先檢查用戶輸入的表達式是否僅包含數字和四則運算符號。這是通過檢查每個字符是否為數字或允許的運算符來實現的。
如果輸入有效,使用 eval 函數計算表達式的結果。
如果輸入包含不允許的字符或 eval 函數拋出異常,則返回錯誤信息。
請注意,由於使用了 eval,該程式僅適用於受信任的環境下使用。在處理來自不可靠來源的輸入時,需要採取其他方法來安全地評估表達式。