Springen naar inhoud

Python help


  • Log in om te kunnen reageren

#1

rembo357

    rembo357


  • 0 - 25 berichten
  • 11 berichten
  • Gebruiker

Geplaatst op 17 februari 2012 - 23:24

hallo ben ik weer met nog een klein probleempje
ik probeer dit:
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:
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

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

ZVdP

    ZVdP


  • >1k berichten
  • 2097 berichten
  • VIP

Geplaatst op 17 februari 2012 - 23:48

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

#3

rembo357

    rembo357


  • 0 - 25 berichten
  • 11 berichten
  • Gebruiker

Geplaatst op 18 februari 2012 - 08:33

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

#4

ZVdP

    ZVdP


  • >1k berichten
  • 2097 berichten
  • VIP

Geplaatst op 18 februari 2012 - 10:30

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

#5

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 18 februari 2012 - 13:03

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.

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

#6

ZVdP

    ZVdP


  • >1k berichten
  • 2097 berichten
  • VIP

Geplaatst op 18 februari 2012 - 14:14

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

#7

rembo357

    rembo357


  • 0 - 25 berichten
  • 11 berichten
  • Gebruiker

Geplaatst op 20 februari 2012 - 17:44

het is de bedoeling dat er punten in ziten want dat is wat er in de bieba staat

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





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures