Python help

Moderators: jkien, Xilvo

Reageer
Berichten: 11

Python help

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

Gebruikersavatar
Berichten: 2.097

Re: Python help

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.
"Why must you speak when you have nothing to say?" -Hornblower

Conserve energy: Commute with a Hamiltonian

Berichten: 11

Re: Python help

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

Gebruikersavatar
Berichten: 2.097

Re: Python help

Maar moet je geen string intypen voor "b = sys.stdin.readline().strip()"?
"Why must you speak when you have nothing to say?" -Hornblower

Conserve energy: Commute with a Hamiltonian

Berichten: 7.068

Re: Python help

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: '.'

Gebruikersavatar
Berichten: 2.097

Re: Python help

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
"Why must you speak when you have nothing to say?" -Hornblower

Conserve energy: Commute with a Hamiltonian

Berichten: 11

Re: Python help

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

Reageer