1 van 1

Python help

Geplaatst: vr 17 feb 2012, 23:24
door rembo357
hallo ben ik weer met nog een klein probleempje

ik probeer dit:

Code: Selecteer alles

def omkeeren (a):

	bieb = {' ':' ','a':'1.', 'b':'2.', 'c':'3.', 'd':'4.', 'e':'5.', 'f':'6.', 'g':'7.', 'h':'8.', 'i':'9.', 'j':'10.', 'k':'11.', 'l':'12.', 'm':'13.', 'n':'14.', 'o':'15.', 'p':'16.', 'q':'17.', 'r':'18.', 's':'19.', 't':'20.', 'u':'21.', 'v':'22.', 'w':'23.', 'x':'24.', 'y':'25.', 'z':'26.',}

	ret = ''

	for uit in a:

		uit = bieb[uit]

		ret = ret + uit

	return ret



def terug (b):

	bieba = {' ':' ','1':'a.', '2':'b.', '3':'c.', '4':'d.', '5':'e.','6':'f.', '7':'g.', '8':'h.', '9':'i.', '10':'j.', '11':'k.', '12':'l.', '13':'1m.', '14':'n.', '15':'o.', '16':'p.', '17':'q.', '18':'r.', '19':'s.', '20':'t.', '21':'u.', '22':'v.', '23':'w.', '24':'x.', '25':'y.', '26':'z.',}

	re = ''

	for lol in b:

		lol = bieba[lol]

		re = re + lol

	return re







print ('1 = code krijgen')

print ('2 = code invoeren')

optie = sys.stdin.readline().strip()



	

if optie == '1':

	print ('type iets in')

	a = sys.stdin.readline().strip()

	print (omkeeren(a))



elif optie == '2':

	print('voer code in')

	b = sys.stdin.readline().strip()

	print (terug(b))
alleen als je dat doet krijg je dit:

Code: Selecteer alles

Traceback (most recent call last):

  File "F:\python\omkeeren.py", line 40, in <module>

	print (terug(b))

  File "F:\python\omkeeren.py", line 15, in terug

	lol = bieba[lol]

KeyError: '.'
ik heb ale mogelijkheden al geprobeerd maar niks helpt weet iemand wat er fout is

tnx

Re: Python help

Geplaatst: vr 17 feb 2012, 23:48
door ZVdP
Aan de error te zien kies je voor optie 2, maar welke string geeft je in?

Ik ken geen Python, maar de error lijkt me te zeggen dat je bieba['.'] opvraagt, terwijl er voor '.' geen overeenkomstige waarde gedefinieerd is in bieba.

Re: Python help

Geplaatst: za 18 feb 2012, 08:33
door rembo357

Code: Selecteer alles

elif optie == '2':

	print('voer code in')

	b = sys.stdin.readline().strip()

	print (terug(b))
hier geef je op wat er uit de 'bieba' word gehaalt

Re: Python help

Geplaatst: za 18 feb 2012, 10:30
door ZVdP
Maar moet je geen string intypen voor "b = sys.stdin.readline().strip()"?

Re: Python help

Geplaatst: za 18 feb 2012, 13:03
door EvilBro
De fout die je maakt is dat je een foutmelding geeft, maar niet zegt wat je input is. Ik vermoed dat je een punt in je input hebt zitten. Dit zal een foutmelding geven.

Code: Selecteer alles

>>> terug(".")

Traceback (most recent call last):

  File "<pyshell#7>", line 1, in <module>

terug(".")

  File "<pyshell#4>", line 5, in terug

lol = bieba[lol]

KeyError: '.'

Re: Python help

Geplaatst: za 18 feb 2012, 14:14
door ZVdP
Je zou ook eens moeten kijken naar de split() methode van een string, aangezien je rechtstreekse for-lus over de string niet zal werken:

python string methods

Re: Python help

Geplaatst: ma 20 feb 2012, 17:44
door rembo357
het is de bedoeling dat er punten in ziten want dat is wat er in de bieba staat

Code: Selecteer alles

   bieba = {' ':' ','1':'a.', '2':'b.', '3':'c.', '4':'d.', '5':'e.','6':'f.', '7':'g.', '8':'h.', '9':'i.', '10':'j.', '11':'k.', '12':'l.', '13':'1m.', '14':'n.', '15':'o.', '16':'p.', '17':'q.', '18':'r.', '19':'s.', '20':'t.', '21':'u.', '22':'v.', '23':'w.', '24':'x.', '25':'y.', '26':'z.',}
Woo ik zie mijn eigen fout bedankt man ik ga nu direct veranderen ik doe met punten inderdaad maar ik heb in bieba niet gezegd dat er punten in staat

zo veel bedankt