[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