[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