簡體   English   中英

存儲特定的整數-Python

[英]Storing Specific Whole Numbers - Python

我需要找到一種簡單的方法來存儲特定的整數,例如多項式。 如果用戶輸入:

2x ^ 3 + 5x ^ 2-8x + 3

我基本上想創建一個[2,5,-8,3]的列表(認為這將是最簡單的方法)作為f(x),然后為g(x)創建另一個列表,這樣我以后就可以添加/減去它們。 我對如何執行此操作完全感到困惑,我希望用戶立即輸入整個多項式。 我不希望我的程序分部分詢問。 謝謝:)(PS,我要出去大約半小時/ 45分鍾,所以我回到家時會回到這里。再次感謝!)

您可以使用“理解”多項式的sympy。 不過,您仍然必須手動插入乘法符號:

import re, sympy

# example
s = '2x^3 + 5x^2 - 8x + 3'
# replace juxtapostion with explicit multiplication
sp = re.sub('[0-9][a-z]', lambda m: '*'.join(m.group()), s)
sp
# '2*x^3 + 5*x^2 - 8*x + 3'
# no we can create a poly object
p = sympy.poly(sp)
p
Poly(2*x**3 + 5*x**2 - 8*x + 3, x, domain='ZZ')
# getting coefficients is easy
p.coeffs()
[2, 5, -8, 3]
# and we can do all sorts of other poly stuff 
p*p
Poly(4*x**6 + 20*x**5 - 7*x**4 - 68*x**3 + 94*x**2 - 48*x + 9, x, domain='ZZ')
...

使用re (正則表達式)執行此模式查找內容,並使用input獲取input的文本:

import re
a=input('Enter your stuff: ')
s=re.sub('[a-zA-Z^]','',a)
print([int('-'+i[0]) if s[s.index(i)-2]=='-' else int(i[0]) for i in re.split(' [+|-] ',s)])

示例輸出:

Enter your stuff: 2x^3 + 5x^2 - 8x + 3
[2, 5, -8, 3]

暫無
暫無

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

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