[python] Počítání v jiných soustavách
Jan Janech
devel na atlas.sk
Sobota Únor 3 12:47:51 CET 2007
rajcze wrote:
> Ahoj,
> tak sem si to ze zvedavosti zkusil vyrobit, a neni to tak slozite:
>
> import re
> from math import *
>
> soustava = int(raw_input("Zadejte soustavu: "))
> priklad = raw_input("Zadejte priklad: ")
>
> pom=[]
> pom.append(re.split(r"[^0-9]+", priklad))
> pom.append(re.split(r"[0-9]+", priklad))
> if pom[0][0] is not '':
> pom[0].insert(0,'')
>
> out = ""
>
> for i in range(len(pom[1])):
> try:
> out += str(int(pom[0][i], soustava)) + pom[1][i]
> except:
> out += ' ' + pom[1][i]
>
> print out,'=',eval(out)
>
> zkousel sem to teda jen na par prikladech (jmenovite "101 * (10 +
> 111)" a "sqrt((10*10+100)/10)"
>
> s pozdravem
> Josef Skladanka
>
Taky jednoduchsi sposob je:
import re
reCislo = re.compile('\d+')
eval2 = lambda xxx: eval(reCislo.sub(lambda x: str(int(x.group(0), 2)),
xxx))
#priklady:
>>> eval2('101 * (10 + 111)')
45
>>> eval2('sqrt((10*10+100)/10)')
2.0
Další informace o konferenci Python