Xây dựng máy tính dòng lệnh đơn giản: người dùng chọn phép toán từ menu, nhập 2 số, chương trình in kết quả.
Các phép toán hỗ trợ
- Cộng (+)
- Trừ (-)
- Nhân (*)
- Chia (/)
- Chia nguyên (//)
- Chia lấy dư (%)
Mã nguồn
a, b = 15, 2
print("1 - Cộng\n2 - Trừ\n3 - Nhân\n4 - Chia\n5 - Chia nguyên\n6 - Chia lấy dư")
option = int(input("Chọn phép toán (1-6): "))
if option == 1:
print(f"Kết quả: {a + b}")
elif option == 2:
print(f"Kết quả: {a - b}")
elif option == 3:
print(f"Kết quả: {a * b}")
elif option == 4:
print(f"Kết quả: {a / b}")
elif option == 5:
print(f"Kết quả: {a // b}")
elif option == 6:
print(f"Kết quả: {a % b}")
else:
print("Lựa chọn không hợp lệ!")Chạy thử
1 - Cộng 2 - Trừ 3 - Nhân 4 - Chia 5 - Chia nguyên 6 - Chia lấy dư Chọn phép toán (1-6): 3 Kết quả: 30
Chọn phép toán (1-6): 6 Kết quả: 1
Mở rộng: Máy tính lặp lại (REPL)
def calculator():
while True:
try:
expr = input("\nNhập phép tính (vd: 2 + 3) hoặc 'q' để thoát: ")
if expr.lower() == 'q':
break
# Cách đơn giản: eval (CẢNH BÁO: không dùng cho input không tin cậy)
# result = eval(expr)
# Cách an toàn: parse thủ công hoặc dùng operator
parts = expr.split()
if len(parts) != 3:
print("Định dạng: số phép_toán số")
continue
x, op, y = float(parts[0]), parts[1], float(parts[2])
ops = {'+': lambda a,b: a+b, '-': lambda a,b: a-b,
'*': lambda a,b: a*b, '/': lambda a,b: a/b,
'//': lambda a,b: a//b, '%': lambda a,b: a%b}
if op in ops:
print(f"Kết quả: {ops[op](x, y)}")
else:
print("Phép toán không hỗ trợ")
except Exception as e:
print(f"Lỗi: {e}")
calculator()Kết luận
Máy tính cơ bản luyện tập: input, int/float conversion, if-elif, dictionary dispatch, exception handling. Tránh eval() trong production.