簡體   English   中英

Python-計算器程序和字符串

[英]Python - calculator program and strings

我是Python的新手,正在嘗試編寫計算器程序。 我一直在嘗試執行以下操作,但沒有成功,因此請為我指明正確的方向:

我想以用戶身份輸入方程,例如:f(t)= 2x ^ 5 + 8

程序應識別出字符串的不同部分,在這種情況下,使變量f(t)分配2x ^ 5 + 8。

不過,如果我輸入方程式后跟等號,例如2x ^ 5 + 8 =

程序只會輸出答案。

我不是在問如何為求解方程式的數學邏輯編寫代碼,而是在如何使程序識別字符串的不同部分並據此做出決策。

很抱歉,我沒有任何代碼可以顯示,因為我不確定如何執行此操作,因此正在尋求幫助。

謝謝。

需要一點上下文:您所描述的問題通常被稱為解析 ,根據語法的不同,它可能變得相當復雜。 語法語言的描述; 就您而言,該語言是計算器所有有效公式的集合。

建議的第一步(甚至在您開始編碼之前)就是形式化語法。 這主要是為了您自己的利益,因為它將使編程更加容易。 一種行之有效的方法是使用EBNF描述語法,並且存在諸如PLY for Python之類的工具,您可以使用這些工具生成此類語言的解析器。

讓我們嘗試一下計算器語法的簡化版本:

digit := "0" | "1"                  # our numbers are in binary
number := digit | number digit      # these numbers are all nonnegative
variable := "x" | "y"               # we recognize two variable names
operator := "+" | "-"               # we could have more operators
expression := number | variable | "(" expression operator expression ")"
definition := variable "=" expression 
evaluation := expression "="

請注意,此語法存在多個問題。 例如:

  1. 空格呢?
  2. 那負數呢?
  3. 您如何處理x = x (這是一個有效的definition )之類的輸入?

前兩個可能是語法本身的問題,而最后一個可能需要在以后的階段中處理(該語言可能與上下文相關嗎?)。

但是無論如何,給定這樣的語法,像PLY這樣的工具可以為您生成一個解析器,但是讓您自己來處理任何其他邏輯(例如x = x )。 但是,首先,我建議您嘗試自己實現它。 一種想法是使用遞歸編寫一個所謂的Top Down Parser

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM