2010-06-06 33 views
24

phương pháp thông thường của việc áp dụng toán học để biến làgán toán tử cho biến trong python?

a * b 

Có thể tính toán và vận dụng hai toán hạng như thế này?

a = input('enter a value') 
b = input('enter a value') 
op = raw_input('enter a operand') 

Sau đó, làm cách nào để kết nối giữa hai biến op và hai ab?
Tôi biết tôi có thể so sánh op để +, -, %, $ và sau đó gán và tính toán ....

Nhưng tôi có thể làm một cái gì đó giống như a op b, làm thế nào để nói với trình biên dịch rằng op là một nhà điều hành?

Trả lời

37

Bạn có thể sử dụng các mô-đun điều hành và một từ điển:

import operator 
ops = {"+": operator.add, 
     "-": operator.sub, 
     "*": operator.mul, 
     "/": operator.div} 
op_char = raw_input('enter a operand') 
op_func = ops[op_char] 
result = op_func(a, b) 
+0

có mô-đun này là tuyệt vời, tôi đang kiểm tra nó, nhờ ...... –

+0

Đối với python 3.x toán tử '.truediv' hoặc 'operator.floordiv' nên được sử dụng thay cho https: // docs. python.org/3/library/operator.html –

6

Các nhà điều hành mô-đun http://docs.python.org/library/operator.html thấy nhiều chức năng tương ứng với thực tế tất cả các nhà khai thác Python. Bạn có thể ánh xạ biểu tượng toán tử cho các hàm đó để lấy hàm thích hợp, sau đó gán nó cho biến op của bạn và tính toán op (a, b).

1

Bạn sẽ cần phải so sánh chuỗi đầu vào của người dùng với danh sách các toán hạng của bạn bằng tay. Không có sự tương tự của int() ở đây, vì các toán tử là các từ khóa trong ngôn ngữ chứ không phải các giá trị.

Khi bạn đã so sánh chuỗi đầu vào đó với danh sách toán hạng và xác định toán tử tương ứng, bạn có thể sử dụng thư viện chuẩn operator module của Python để tính toán kết quả của toán tử.

Các vấn đề liên quan