1 van 1
[python] karakter inlezen
Geplaatst: ma 13 feb 2012, 20:33
door rembo357
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
Re: [python] karakter inlezen
Geplaatst: ma 13 feb 2012, 23:34
door In physics I trust
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
naar
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!
Re: [python] karakter inlezen
Geplaatst: di 14 feb 2012, 14:37
door rembo357
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
Re: [python] karakter inlezen
Geplaatst: di 14 feb 2012, 15:20
door Xenion
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'
Re: [python] karakter inlezen
Geplaatst: di 14 feb 2012, 15:21
door rembo357
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'
Re: [python] karakter inlezen
Geplaatst: di 14 feb 2012, 15:30
door Xenion
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.
Re: [python] karakter inlezen
Geplaatst: di 14 feb 2012, 17:29
door rembo357
het werkt inderdaad
maar wat betekent
dan die 'a\n'
dat snap ik niet helemaal maar heel erg bedankt nu kan ik door met het programmaatje
maar bedankt
Re: [python] karakter inlezen
Geplaatst: di 14 feb 2012, 17:43
door Xenion
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
Re: [python] karakter inlezen
Geplaatst: di 14 feb 2012, 20:04
door rembo357
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