[python] karakter inlezen

Moderators: jkien, Xilvo

Reageer
Berichten: 11

[python] karakter inlezen

hallo mensen

ik heb een vraag over python

ik ben bezig met een programmaatje.

maar ik zit met een probleem. ik wil dat je een letter invoert en dan geeft hij een ander letter dit lijkt misschien stom maar wat ik er mee van plan ben is best wel cool

dit is wat ik tot nu heb

maar hij geeft altijd fout als ik a intypen

import sys

print ('type een leter in')

inp = sys.stdin.readline()

a = 'a'

if inp == a:

print'lol'



else:

print 'fout'

wat doe ik fout

alvast bedankt

Gebruikersavatar
Berichten: 7.390

Re: [python] karakter inlezen

Dat duurde even voor ik het vond. Ik zat me blind te staren want ik zag de fout niet.

Ik denk dat ik een oplossing heb gevonden. Verander

Code: Selecteer alles

inp = sys.stdin.read()
naar

Code: Selecteer alles

inp = sys.stdin.read(1)
Dan wordt er net één char ingelezen. Anders denk ik dat de \n wordt meegenomen.

Als iemand iets anders weet, dan hoor ik het ook graag!
"C++ : Where friends have access to your private members." Gavin Russell Baker.

Berichten: 11

Re: [python] karakter inlezen

sorry nee dat werkt ook niet en

dan krijg ik dit

Code: Selecteer alles

Traceback (most recent call last):

  File "C:\Documents and Settings\Administrator\Bureaublad\lol.py", line 4, in <module>

	inp = sys.stdin.read(1)

AttributeError: read

>>>


ik snap het zelf ook niet meer maar bedankt voor het proberen

Gebruikersavatar
Berichten: 2.609

Re: [python] karakter inlezen

Het is een simpele vraag, maar dat blijkt niet zo evident te zijn in Python.

Kijk hier eens. Als ik op google zoek kom ik steeds op diezelfde code terecht.

Dit is wat ik zelf heb bedacht: het is niet echt een mooie oplossing, maar als je het als volgt doet dan werkt je programma wel:

Code: Selecteer alles

import sys

print ('type een leter in')

inp = sys.stdin.readline()

if inp == 'a\n':

print 'lol'

else:

print 'fout'

Berichten: 11

Re: [python] karakter inlezen

er stond read ik weet niet of dat goed was ik heb er readline van gemaakt en dan geeft ie direct fout

Code: Selecteer alles

import sys



print ('type een leter in')

inp = sys.stdin.readline(1)

a = 'a'



if inp == 'a':

	print'll'

	

else:

	print 'fout'

Gebruikersavatar
Berichten: 2.609

Re: [python] karakter inlezen

Probeer eens met de code die ik hierboven gaf. Het idee is dat je niet probeert van die ene character te lezen, maar dat je je bewust bent van het feit dat je die newline meekrijgt en daar rond werkt.

Je kan ook gewoon zeggen dat je van inp enkel het eerste karakter wil overhouden.

Berichten: 11

Re: [python] karakter inlezen

het werkt inderdaad

maar wat betekent

Code: Selecteer alles

if inp == 'a\n':
dan die 'a\n'

dat snap ik niet helemaal maar heel erg bedankt nu kan ik door met het programmaatje :)

maar bedankt

Gebruikersavatar
Berichten: 2.609

Re: [python] karakter inlezen

Je verwacht dat er 'a' staat in de input van de gebruiker. Maar door de functie die je aanroept krijg je ook steeds nog een witregel mee. Als je len(inp) bekijkt zal je zien dat die 2 is ipv 1.

De code voor een witregel wordt gegeven door '\n' als je weet dat die witregel mee in inp zit dan kan je daar rekening mee houden door hem ofwel te verwijderen, ofwel door hem ook in de controle te zetten.

if inp = 'a\n' kijkt dus na of in inp een a staat, gevolgd door een witregel.

a = 'a'

if inp == a:

Die regel vond ik een beetje overbodig. Ik heb die op 1 lijn geschreven.
maar wat ik er mee van plan ben is best wel cool
Ik ben benieuwd :)

Berichten: 11

Re: [python] karakter inlezen

oké nu snap ik het ja wat ik ga maken is een soort van vertaler als je hoi intypt dan laat het programmaatje hoi zien in het 'standard galactic alfabet' dat moet het worden.

maar erg bedankt voor de uitleg. ik kan het wel zo gebruiken maar het is beter om te weten hoe het werkt.

nu moet ik alleen nog zorgen dat als je meerdere Letters intypt hij ze allemaal vertaald ik heb wel een idee hoe ik het ga doen maar suggesties zijn welkom.

Code: Selecteer alles

ant = ''

dan iets wat letter voor letter doet

ant = inp + ant 

zo iets

ik ken iemand die weet hoe dat moet moet ik binnen kort eens vragen

Reageer