Viết hàm máy tính đơn giản cho hai số thực (Chứa 4 hàm con +, -, x, %)

Bài tập Python tự luyện

5.0 (6 đánh giá)
Tạo bởi Kteam Cập nhật lần cuối 01:10 20-11-2021 8.208 lượt xem 18 bình luận
Tác giả/Dịch giả: TrongPhuCBL49 Kteam
Học nhanh

Danh sách bài học

Viết hàm máy tính đơn giản cho hai số thực (Chứa 4 hàm con +, -, x, %)

Bài toán cần xử lý

Viết hàm máy tính đơn giản cho hai số thực. Trong hàm có gọi 4 hàm con để tính các phép tính cộng, trừ, nhân, chia tương ứng.


Kiến thức cần có

  • Hàm input() và hàm print()
  • Cấu trúc lặp trong Python
  • Cấu trúc rẽ nhánh trong Python
  • Biến và kiểu dữ liệu
  • Hàm trong Python
  • Xử lý ngoại lệ (Exception Handling)

Định dạng đầu vào

Gồm một dòng duy nhất chưa ba giá trị {số thứ nhất} {phép tính}
{số thứ hai} trên 1 dòng, cách nhau bởi khoảng trắng.

Với:

  • {số thứ nhất} và {số thứ hai} là hai số thực
  • {phép tính} là một trong các dấu ['+', '-', 'x', ':']

Định dạng đầu ra

Gồm một dòng duy nhất hiển thị như sau: 

Nếu là phép tính chia và {số thứ hai} bằng 0: So chia phai khac 0!

Nếu biểu thức hợp lệ: {so thu nhat} {phep tinh} {so thu hai} = {ket qua}

Với:

  • {so thu nhat}, {phep tinh}, {so thu hai} là ba giá trị nhập vào từ bàn phím
  • {ket qua} là kết quả của biểu thức

Ví dụ

  • Input 1:
4 + 5
  • Output 1:
4.0 + 5.0 = 9.0

  • Input 2:
5.6784 - 3.5856
  • Output 2:
5.6784 - 3.5856 = 2.0928

  • Input 3:
0.345 x -3.57
  • Output 3:
0.345 x -3.57 = -1.23165

  • Input 4:
5.396 : 0
  • Output 4:
So bi chia phai khac 0!

  • Input 5:
-4.387 : 2.56
  • Output 5:
-4.387 : 2.56 = -1.7136718749999997

Gợi ý

  • Định nghĩa hàm cong, tru, nhan, chia với tham số là hai số cần tính toán
  • Đối với hàm chia, sử dụng cấu trúc rẽ nhánh để xử lý trường hợp số chia bằng 0
  • Định nghĩa hàm may_tinh với tham số là hai số cần tính và phép tính:
  • Sử dụng cấu trúc rẽ nhánh để gọi các hàm tương ứng với phép tính và trả về kết quả
  • Sử dụng cấu trúc Xử lý ngoại lệ để xử lý các trường hợp gây ra lỗi
  • Đặt toàn bộ chương trình trong khối try.
  • Dùng hàm input() và hàm split() để nhận ba giá trị {số thứ nhất}, {phép tính} và {số thứ hai} từ bàn phím.
  • Ép kiểu dữ liệu của {số thứ nhất} và {số thứ hai} sang số thực để xử lý vì các giá trị nhận được từ hàm input() mặc định sẽ ở kiểu chuỗi.
  • Gọi hàm may_tinh và truyền vào các tham số cần thiết
  • Nếu hàm trả về lỗi chia cho 0 thì xuất thông báo lỗi, còn không thì hiển thị kết quả ra màn hình theo định dạng đầu ra yêu cầu.
  • Lỗi sẽ phát sinh ở lệnh ép kiểu nếu định dạng đầu vào không hợp lệ. Dùng lệnh except để bắt lỗi:
  • Dùng hàm print() hiển thị thông báo lỗi ra màn hình

Code mẫu

#Dinh nghia ham
def cong(soHangThuNhat, soHangThuHai):
   return soHangThuNhat + soHangThuHai

def tru(soBiTru, soTru):
   return soBiTru - soTru

def nhan(thuaSoThuNhat, thuaSoThuHai):
   return thuaSoThuNhat * thuaSoThuHai

def chia(soBiChia, soChia):
   if soChia == 0:
       return "ChiaCho0"
   return soBiChia / soChia

def may_tinh(soThuNhat, soThuHai, phepTinh):
   if phepTinh == '+':
       return cong(soThuNhat, soThuHai)
   if phepTinh == '-':
       return tru(soThuNhat, soThuHai)
   if phepTinh == 'x':
       return nhan(soThuNhat, soThuHai)
   if phepTinh == ':':
       return chia(soThuNhat, soThuHai)

#Khoi lenh co the phat sinh loi
try:
   #Nhap bieu thuc tu ban phim
   soThu1, phepTinh, soThu2 = input().split()
  
   #Ep kieu du lieu sang so thuc
   soThu1 = float(soThu1)
   soThu2 = float(soThu2)

   #Goi thuc thi ham va truyen cac tham so cho ham
   ketQua = may_tinh(soThu1, soThu2, phepTinh)

   if ketQua == "ChiaCho0":
       print("So chia phai khac 0!")
   else:
       #In ra man hinh bieu thuc va ket qua
       print("{} {} {} = {}".format(soThu1, phepTinh, soThu2, ketQua))   
#Khoi lenh duoc thuc thi khi loi xay ra
except:
   print("Dinh dang dau vao khong hop le!")

Kết luận

Trong bài này, Kteam đã hướng dẫn bạn cách viết hàm máy tính đơn giản cho hai số thực. Trong hàm có gọi 4 hàm con để tính các phép tính cộng, trừ, nhân, chia tương ứng. Thêm bài giải của bạn vào phần bình luận để được Kteam review code và fix lỗi (nếu có) trong livestream của khóa học này.

Ở bài tiếp theo, chúng ta sẽ cũng nhau học cách VIẾT HÀM GIẢI PHƯƠNG TRÌNH BẬC NHẤT VÀ PHƯƠNG TRÌNH BẬC HAI. (THAM SỐ LÀ CÁC HỆ SỐ CỦA PHƯƠNG TRÌNH).

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của bạn để phát triển bài viết tốt hơn. Đừng quên " Luyện tập - Thử Thách - Không ngại khó!"


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Viết hàm máy tính đơn giản cho hai số thực (Chứa 4 hàm con +, -, x, %) dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên likeshare để ủng hộ Kteam và tác giả nhé!

Project

Nếu việc thực hành theo hướng dẫn không diễn ra suôn sẻ như mong muốn. Bạn cũng có thể tải xuống PROJECT THAM KHẢO ở link bên dưới!


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Nội dung bài viết

Tác giả/Dịch giả

Có niềm đam mê với thuật toán và tư duy logic. Là người cầu toàn, thích lập kế hoạch và tối ưu mọi vấn đề trong cuộc sống. Mong muốn luôn sống vui vẻ yêu đời =))) không bon chen.

Sở thích cá nhân: Đàn ca nhảy múa và đi du lịch.


Khóa học

Bài tập Python tự luyện

Serial dành cho những bạn cần luyện tập phương pháp, tu duy lập trình. Làm quen với các bài toán trong lập trình, ngẫu nhiên từ cơ bản đến nâng cao. Nội dung Serial này được phân tách chi tiết nhất có thể, nhằm giúp các bạn dễ hiểuthực hành được ngay.

Bạn nên tự làm lại từng bài tập trên video để có kết quả tốt nhất. Cùng Kteam "Luyện tập - Thử thách - không ngại khó"

Đánh giá

AnonyN đã đánh giá 16:57 30-08-2021

TankAnk đã đánh giá 08:50 24-08-2021

Mai Anh Tài đã đánh giá 15:25 12-08-2021

vietnguyendang đã đánh giá 18:40 05-04-2021

xxxts2txxx đã đánh giá 15:51 13-03-2021

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
haikhongbeo993 đã bình luận 09:40 26-10-2024

def calculator(a, dau, b):

    if dau == '+':

        return a + b

    elif dau == '-':

        return a - b

    elif dau == 'x':

        return a * b

    elif dau == ':':

        if b == 0:

            return None

        return a / b

try:

    a, dau, b = input('nhập phép tính(cách nhau bởi dấu cách):\n').split()

    a, b = float(a), float(b)

    result = calculator(a, dau, b)

    arith = ['+', '-', 'x', ':', ]

    if dau not in arith:

        print("Can only perform addition(+), subtraction(-), multiplication(x), division(:)")

    else:

        if result == None:

            print("can't float division by 0")

        else:

            print(f"{a} {dau} {b} = {result}")

except ValueError:

    print("input value error")

duclm3 đã bình luận 17:21 25-06-2024

while True:

    try:

        def tinhtoan(a,pheptinh,b):

            if pheptinh == '+':

                s = a + b

                return f'ket qua cong = {s}'

            elif pheptinh == '-':

                s = a - b

                return f'ket qua tru  = {s}'

            elif pheptinh == 'x':

                s = a * b

                return f'ket qua nhan  = {s}'

            elif pheptinh == ':':

                if b == 0:

                    print('yeu cau nhap lai b > 0')

                else:

                    s = a / b

                    return f'ket qua chia  = {s}'

        a,pheptinh,b = input('Nhap vao phep tinh: ').split()

        a = float(a)

        b = float(b)

        print(tinhtoan(a, pheptinh, b))

    except Exception as e:

        print("Đã xảy ra lỗi: ", e)

        break

 

kakavan đã bình luận 16:48 31-05-2024

def signculate(no1,sign,no2):
    if sign == '+':
        print("{} + {} = {}".format(no1,no2,no1+no2))
    elif sign == '-':
        print("{} - {} = {}".format(no1,no2,no1-no2))
    elif sign == 'x':
        print("{} x {} = {}".format(no1,no2,no1*no2))
    elif sign == ':':
        if no2 == 0:
            print("Số chia phải khác 0!")
        else:
            print("{} : {} = {}".format(no1,no2,no1/no2))
    else:
        print("Phép tính phải là 1 trong các dấu: +,-,x,:")

while True:
    try:
        no1,sign,no2 = input("Nhập vào: ").split()
        no1,no2 = float(no1),float(no2)

        signculate(no1,sign,no2)
        break
    except:
        print("Định dạng đầu vào không hợp lệ!")

Bikeys đã bình luận 09:22 12-02-2024

try:

    num1,sign,num2=input('input expression:').split()

    num1=float(num1)

    num2=float(num2)

    calsign=['+','-','*','/']

 

    def cal_sign(num1,sign,calsign,num2):

       

            for i in calsign:

                if sign in calsign :

                    return ('{} {} {}'.format(num1,i,num2))               

    def result(sign,num1,num2,cal_sign):

        if sign == '/' and num2 == 0:

            return ('So chia phai khac 0')

        elif sign == '+':

            return ('{} = {}'.format(cal_sign,num1+num2))

        elif sign == '-':

            return ('{} = {}'.format(cal_sign,num1-num2))

        elif sign == '*':

            return ('{} = {}'.format(cal_sign,num1*num2))

        elif sign == '/':

            return ('{} = {}'.format(cal_sign,num1/num2))

    e = cal_sign(num1,sign,calsign,num2)

    print(result(sign,num1,num2,e))

except:

    print('Dinh dang dau vao khong hop le')

TayMonKhanh đã bình luận 14:10 30-06-2023

def Tong(a,c):

    return a+c

def Tru(a,c):

    return a-c

def Nhan(a,c):

    return a*c

def Chia(a,c):

    return a/c

 

def Maytinh(a,b,c):

    if b=="+":

        return Tong(a,c)

    elif b=="-":

        return Tru(a,c)

    elif b=="*":

        return Nhan(a,c)

    elif b=="/":

        if c==0:

            print("không được chia cho 0")

        return Chia(a,c)

cờ=False

try:

    a,b,c=input().split()

    a,c=float(a),float(c)

    cờ=True

except:

    print("Sai định dạng")

if cờ:

    print(f"{a} {b} {c} = {Maytinh(a,b,c)}")

Không có video.