Máy tính chuỗi Python

Trong chương trình này, chúng tôi yêu cầu người dùng chọn một thao tác. Tùy chọn 1, 2, 3 và 4 hợp lệ. Nếu bất kỳ đầu vào nào khác được cung cấp, Đầu vào không hợp lệ sẽ được hiển thị và vòng lặp tiếp tục cho đến khi một tùy chọn hợp lệ được chọn

Hai số được lấy và phân nhánh

left = '1'
operator = '+'
right = '2*3'
2 được sử dụng để thực hiện một phần cụ thể. Các chức năng do người dùng định nghĩa
left = '1'
operator = '+'
right = '2*3'
3,
left = '1'
operator = '+'
right = '2*3'
4,
left = '1'
operator = '+'
right = '2*3'
5 và
left = '1'
operator = '+'
right = '2*3'
6 đánh giá các hoạt động tương ứng và hiển thị đầu ra

Tuy nhiên, trong trường hợp viết một chương trình tính toán đơn giản, có nhiều cách khác nhau để thực hiện. Cái nào là tốt nhất, phụ thuộc rất nhiều vào ngữ cảnh

Trong bài viết này, tôi sẽ thảo luận về ba cách tiếp cận phổ biến, bao gồm điểm mạnh và điểm yếu của từng cách tiếp cận.

Giải pháp 1. Phân nhánh có điều kiện

Tôi đoán nếu có một cách "rõ ràng" duy nhất để xây dựng một máy tính trong Python, thì đó sẽ là sử dụng phân nhánh có điều kiện

Các bước cơ bản là

  1. Yêu cầu người dùng nhập dữ liệu
  2. Chọn một thao tác có điều kiện dựa trên toán tử đã chọn
  3. Thực hiện phép tính bằng toán tử đã chọn
  4. In kết quả

Mã sẽ trông giống như thế này

Không có gì sai với cách tiếp cận này và trên thực tế, hầu hết các hướng dẫn đều chọn một số biến thể của cách này. Nhưng nhược điểm bao gồm

  • Chỉ hỗ trợ hoạt động nhị phân
  • Khá nhiều mã cho một nhiệm vụ đơn giản

Có thể có các giải pháp tốt hơn tùy thuộc vào những gì bạn đang cố gắng đạt được

Đây là một liên kết đến mã làm việc

Giải pháp 2. đánh giá()

Một cách tiếp cận khác là sử dụng hàm

left = '1'
operator = '+'
right = '2*3'
7 tích hợp sẵn của Python.
left = '1'
operator = '+'
right = '2*3'
8 cho phép bất kỳ chuỗi nào được đánh giá dưới dạng biểu thức Python. Điều này cực kỳ mạnh mẽ vì nó cho phép mã được tạo và thực thi động khi chạy

Sử dụng điều này, đoạn mã trên có thể được giảm xuống

calc = input("Type calculation:\n")

print("Answer: " + str(eval(calc)))

left = '1'
operator = '+'
right = '2*3'
7 có một số ưu điểm so với giải pháp 1

  • Nó có thể chấp nhận các biểu thức tùy ý (e. g.
    left = '1'
    operator = '+'
    right = '2*3'
    0) không chỉ hoạt động nhị phân
  • Đó là mã ít hơn đáng kể

Đây là một liên kết đến mã làm việc

left = '1'
operator = '+'
right = '2*3'
8 có thể là “một cách rõ ràng” nếu bạn chỉ sử dụng nó cục bộ trên máy tính của mình, vì nó rất tiện lợi và mạnh mẽ. Tuy nhiên, nó nên được sử dụng hết sức cẩn thận trong môi trường sản xuất. Lý do là vì
left = '1'
operator = '+'
right = '2*3'
8 có thể thực thi các biểu thức python tùy ý, vì vậy có thể được sử dụng cho mục đích xấu

Bạn có thể tìm thấy một bài viết hay về các rủi ro bảo mật của

left = '1'
operator = '+'
right = '2*3'
8 tại đây

Giải pháp 3. Tra cứu từ điển và đệ quy

Trong phiên bản máy tính Python này, chúng tôi sẽ thực hiện các cải tiến sau so với giải pháp 1

  • Tra cứu từ điển được sử dụng để xác định nhánh có điều kiện. Điều này làm cho mã sạch hơn, dễ đọc hơn và có thể mở rộng hơn
  • Mô-đun
    left = '1'
    operator = '+'
    right = '2*3'
    3 của Python được sử dụng thay vì xác định các hàm toán học của riêng chúng ta
  • Đệ quy được sử dụng để cho phép hỗ trợ các biểu thức toán học phức tạp (không chỉ các phép toán nhị phân)

Mã kết quả như sau

Cách tiếp cận này mạnh hơn giải pháp 1 và an toàn hơn giải pháp 2

Cách nó hoạt động là khi người dùng chuyển vào một chuỗi (e. g. 1+2*3), hàm

left = '1'
operator = '+'
right = '2*3'
4 của chúng ta sẽ lặp qua từng toán tử mà chúng ta đã định nghĩa trong từ điển
left = '1'
operator = '+'
right = '2*3'
5 và gọi phương thức phân vùng chuỗi trong lần xuất hiện đầu tiên của toán tử đó. Trong trường hợp của
left = '1'
operator = '+'
right = '2*3'
6, điều này sẽ cho chúng ta

left = '1'
operator = '+'
right = '2*3'

Sau đó,

left = '1'
operator = '+'
right = '2*3'
4 được gọi đệ quy trên các biểu thức con cho đến khi nó
left = '1'
operator = '+'
right = '2*3'
8 trả về giá trị true. Vì vậy, trong ví dụ trên, lệnh gọi đệ quy của chúng ta sẽ như thế này

________số 8

Mà giải quyết để

return add(1, 6)

Nếu tôi đang viết một máy tính “thế giới thực” bằng Python, tôi có thể lấy thứ gì đó như thế này làm điểm xuất phát của mình

Đây là một liên kết đến mã làm việc

giải pháp tiền thưởng. mô-đun điện tử

Cách tiếp cận “phần thưởng” cuối cùng và có thể là cách tiếp cận yêu thích của tôi là sử dụng mô-đun e tuyệt vời. Với điều này, chúng ta có thể đánh giá các biểu thức Python “trực tiếp” từ dòng lệnh mà không cần mở trình thông dịch Python

Để cài đặt

left = '1'
operator = '+'
right = '2*3'
0

Sau đó, để sử dụng, chúng ta chỉ cần viết

left = '1'
operator = '+'
right = '2*3'
1

Rất tiện dụng

Tôi hy vọng bạn thấy bài viết này hữu ích. Nếu bạn có bất kỳ ý tưởng nào khác để triển khai máy tính Pythonic, tôi rất muốn nghe về ý tưởng đó trong các nhận xét bên dưới

Tăng cấp mã hóa

Cảm ơn vì đã là một phần của cộng đồng của chúng tôi. Đăng ký kênh YouTube của chúng tôi hoặc tham gia Skilled. khóa học phỏng vấn lập trình dev

Các chuỗi có thể được sử dụng trong tính toán Python không?

Có, bạn có thể sử dụng hàm eval . Lưu câu trả lời này.

Python có máy tính không?

Bây giờ bạn có thể chạy chương trình của mình với máy tính trăn. py trong cửa sổ đầu cuối của bạn và bạn sẽ có thể tính toán bao nhiêu lần tùy thích.

Bạn có thể tính toán một chuỗi?

Bạn không thể đánh giá trực tiếp Chuỗi dưới dạng biểu thức toán học trong Java (đây là ngôn ngữ được biên dịch). Bạn sẽ phải viết trình phân tích cú pháp của riêng mình cho điều đó, điều này thực sự khá nhiều công việc và nó cũng đã được thực hiện bởi những người khác.

Máy tính chuỗi là gì?

Trình hướng dẫn chuỗi là máy tính JavaScript được thiết kế đặc biệt cho chuỗi dây . Tất nhiên, nó có thể được sử dụng để tính toán liên quan đến bất kỳ loại nhạc cụ có dây nào, vì 'vật lý' là giống nhau cho tất cả các loại dây. trong vũ trụ này.