我本人特別喜歡數學,有時候坐在那裡不知道幹嘛,又特別想要弄乙個課題來檢驗一下自己到底學的咋樣,再就是藉此培養自己對於python的樂趣。
我想如果我能把python和我自己喜歡的東西聯絡到一起的話。
這是我在學習面對物件之前,想出來的乙個課題:計算器。真的用心做了,不斷的修改,不斷的除錯,說實話,很享受這種完全沉浸在一件事情當中的感覺。
當完成的那一刻,很開心,很滿足。
from math import sqrt
num = list(input("請輸入您想要計算的算式:"))
def ccc(a):
while true:
c = a.count("^")
d = a.count("*")
if c == 0 and d == 0:
break
elif c == 0:
m = 10**2
n = a.index("*")
elif d == 0:
n = 10**2
m = a.index("^")
else:
m = a.index("^")
n = a.index("*")
if d > 0 and a[n + 1] != "*":
a[n] = "&"
continue
if m < n:
result = sqrt(float(a[m + 1]))
a[m] = str(result)
del a[m + 1]
else:
result = float(a[n - 1]) ** float(a[n + 2])
a[n - 1] = str(result)
del a[n]
del a[n]
del a[n]
if a[0] == "-":
a[0] = str(float(a[1])*(-1))
del a[1]
while true:
x = a.count("&")
y = a.count("/")
z = a.count("%")
if x == 0 and y == 0 and z == 0:
break
m = n = k = 10**2
if x != 0:
m = a.index("&")
if y != 0:
n = a.index("/")
if z != 0:
k = a.index("%")
if m == min(m,n,k):
result = float(a[m - 1]) * float(a[m + 1])
a[m - 1] = str(result)
del a[m]
del a[m]
if n == min(m,n,k):
if a[n+1] == "/":
result = float(a[n - 1]) // float(a[n + 2])
a[n - 1] = str(result)
del a[n]
del a[n]
del a[n]
else:
result = float(a[n - 1]) / float(a[n + 1])
a[n - 1] = str(result)
del a[n]
del a[n]
if k == min(m,n,k):
result = float(a[k - 1]) % float(a[k + 1])
a[k - 1] = str(result)
del a[k]
del a[k]
while true:
x = a.count("+")
y = a.count("-")
if x == 0 and y == 0:
return a
m = n = 10 ** 2
if x != 0:
m = a.index("+")
if y != 0:
n = a.index("-")
if m == min(m,n):
result = float(a[m - 1]) + float(a[m + 1])
a[m - 1] = str(result)
del a[m]
del a[m]
else:
result = float(a[n - 1]) - float(a[n + 1])
a[n - 1] = str(result)
del a[n]
del a[n]
def sss(num):
i = 0
a = len(num)
b = 0
while i < a:
if num[i] in :
b += 1
if i == a-1:
if b > 1:
c = "".join(num[i - b + 1:])
num[i - b + 1] = c
num[i - b + 2:] = ["&"] * (b - 1)
b = 0
else:
if b > 1:
c = "".join(num[i-b:i])
num[i-b] = c
num[i-b+1:i] = ["&"] * (b-1)
b = 0
else:
b = 0
i += 1
continue
i += 1
while true:
if num.count("&") > 0:
del num[num.index("&")]
else:
return num
num_1 = sss(num)
r = num_1.count("(")
while r > 0:
j = 0
for key_1 in num_1:
if key_1 == "(":
m = j
if key_1 == ")":
n = j
break
j += 1
a = num_1[m+1:n] #a為列表,包含乙個小括號內的所有字串
num_1[m:n+1] = ccc(a)
r -= 1
p = ccc(num_1)
print("輸出結果:%.1f" % float(p[0]))
當然了,這只是很簡單的利用內建的演算法和呼叫的開方寫出的乙個,計算器的程式。
但是我個人覺得大多數情況下,應該也夠用了。
算式可以包含括號,小括號,需要用到多層括號的話,統一用小括號。
可以算小數。
開方的話,^16=4,用這個符號,冪運算的話,就是雙乘號了。
作為乙個初學者,興趣為之,希望能得到一些人的共鳴。
最後,謝謝你能夠看我寫的程式。
學習總結 SQL學習總結之SQL語法
選取所有列即原表返回 select from table name 例如 select distinct country from websites 例如 從 websites 表中選取國家為 cn 的所有 例如 從 websites 表中選取id為1的所有 文字字段 vs.數值字段 where 子...
XML介紹之DTD約束語法詳解四
6.dtd 驗證 previous page next page internet explorer 5.0 可根據某個 dtd 來驗證您的 xml。通過 xml 解析器進行驗證 當您試圖開啟某個 xml 文件時,xml 解析器有可能會產生錯誤。通過訪問 parseerror 物件,就可以取回引起錯...
Ajax系列之四 問題總結
1,最經典的就是ie下的快取問題了。如果使用的是get,那麼在ie下出現快取問題。導致 只執行一次。解決辦法就是加時間戳或者隨機數,使url變為唯一,這樣就不會出現ie 下的快取問題了,或者改為post提交。xhr.open get x.aspx?dc newdate gettime true 2,...