[python] Počítání v jiných soustavách
rajcze
rajcze na gmail.com
Sobota Únor 3 10:25:09 CET 2007
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
On 2/3/07, Jakub Vojacek <jakohv na seznam.cz> wrote:
> From: "Michal Vyskocil" <michal.vyskocil na gmail.com>
> Dne pátek 02 únor 2007 18:11 Jakub Vojacek napsal(a):
> > Ahoj
> >
> > Jak byste řešili program, který by počítal například příklad 101*10 ve
> > dvojkové soustavě? Výsledek by v tomto případě byl 10. Procházeli byste
> > výrazema jednotlivá čísla převáděly do desítkové soustavy, použili funkci
> > eval a nakonci zase převedli do binární? Nejde u funkce eval nastavit v
> > jaké soustavě má počítat?
> >
> > Dík
>
> Pokud vim, tak eval zadne takove nastaveni nema. Stejne jako C rozpoznava
> hexadecimalni cisla (zacinaji na 0x)
> oktalova (zacinaji na 0)
> desitkova (ostatni)
>
> Jinak je tento problem vcelku jednoduse resitelny standardnimi prostredky
> Pythonu
>
> int("1001111", 2) zajisti prevod cisla z binarniho tvaru na desitkovy. Ovsem
> je nutne si napsat zpetny prevod.
>
> --
> best regards
> Michal Vyskocil
>
>
>
> Zpětný převod mám zajištěný už mám dávno. jde mi o to že ho nemůžu použít na
> řetězec kde jsou 2 čísla (1010*10). Možnost by byla převádět jedno číslo po
> druhém. Nejdřív bych tedy vzal číslo 1010, zjistil že jeho hodnota je 5 a
> nahradil 1010 číslem 5. To stejný u ostatních čísel. Takže by miu vznikl
> přiklad 5*2 a ten bych vypočítal funkcí eval, převedl zpet do dvojkové
> sooustavy a mám výsledek. Ale to mi přijde trochu moc pracné, to hledání a
> nahrazování čísel.:(
>
>
> B
>
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
--
Rules of Optimization:
Rule 1: Don't do it.
Rule 2 (for experts only): Don't do it yet.
Další informace o konferenci Python