Vraag van een Python-noob

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Grijs
  • Registratie: Mei 2018
  • Laatst online: 24-01-2024
Mijn vraag
Ik ben net begonnen met programmeren, en ben een complete noob 8)7 nou ben ik begonnen met Python, en daarvan ben ik begonnen met leren op codecademy. op codecademy kwam ik een PygLatin translater tegen die ik moest maken, maar dat was best wel een primitieve.
PygLatin is een soort spelletje, dat als je een woord invoert (bijv. hallo) hij allohay teruggeeft. Hij zet de eerste letter achteraan en plakt er ook nog ay achter. Ik ben, zoals eerder gezegd, een complete nietsnut in programmeren, maar wou toch proberen om deze wat uitgebreider te maken. Ik ben begonnen met iets toevoegen dat hij niet meteen stopt als je een woord hebt ingevuld, maar dat je door kan gaan. ook als je een ongeldig woord invult. Dat is met wat Google-werk gelukt, en hij blijft oneindig doorgaan. Nu moet hij op een manier kunnen stoppen, dus wilde ik toevoegen dat hij stopt als je simpelweg 'stop' typt in de input. daar loop ik vast. Ik heb veel gegoogled, en dit is wat ik kon vinden: https://stackoverflow.com...n-python-and-then-perform.

nu werkt dit bij mij niet. Als je stop intypt, dan levert hij gewoon 'topsay' terug en moet je nog een woord invullen, en is er geen andere manier om het te stoppen. Dit is de code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
print('Welkom bij de PygLatin vertaler!')

pyg = 'ay'

while True:
    break_it = "stop"
    word = input("typ een woord: ")
    if len(word) > 0 and word.isalpha():
        lower = word.lower()
        first = lower[0]
        new_word = lower + first + pyg
        new_word = new_word[1:len(new_word)]
        print(new_word)
    elif break_it in word:
        break
    else:
        print('verkeerd woord, probeer opnieuw.')


Relevante software en hardware die ik gebruik
Ik gebruik Visual Studio Code met Python 3.7,


Wat ik al gevonden of geprobeerd heb
Ik heb dus de link die ik eerder al heb neergezet gevonden, maar dat werkt niet bij mij. Ik ben echt een noob met programmeren, zou het erg op prijs stellen als jullie mij kunnen helpen. bedankt!

:)

Alle reacties


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Op regel 14 heb je "elif" (else if), en die voorwaarde wordt alleen gecheckt wanneer niet aan de voorwaarde in de if wordt voldaan. De input "stop" voldoet aan "if len(word) > 0 and word.isalpha()".

Zie ook https://www.programiz.com/python-programming/if-elif-else

[ Voor 14% gewijzigd door GlowMouse op 25-01-2019 22:59 ]


Acties:
  • 0 Henk 'm!

  • Grijs
  • Registratie: Mei 2018
  • Laatst online: 24-01-2024
GlowMouse schreef op vrijdag 25 januari 2019 @ 22:59:
Op regel 14 heb je "elif" (else if), en die voorwaarde wordt alleen gecheckt wanneer niet aan de voorwaarde in de if wordt voldaan. De input "stop" voldoet aan "if len(word) > 0 and word.isalpha()".
ik heb geprobeerd 'and not 'stop''aan de if-statement toe te voegen, maar nu zegt hij bij alles dat het een verkeerd woord is, maar stopt wel als je stop typt..

[ Voor 83% gewijzigd door Grijs op 25-01-2019 23:03 ]

:)


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Moet hij ook stoppen als je 'stop123' invoert?

Acties:
  • 0 Henk 'm!

  • Grijs
  • Registratie: Mei 2018
  • Laatst online: 24-01-2024
GlowMouse schreef op vrijdag 25 januari 2019 @ 23:03:
Moet hij ook stoppen als je 'stop123' invoert?
Niet per se, dacht eerder aan dat hij ook stop als je bijv. stop in hoofdletters intikt. Is volgens mij makkelijk op te lossen met .lower()

:)


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 17:16
Python:
1
2
if len(word) > 0 and word.isalpha() and not 'stop':
    ...stuff....

Dit doet waarschijnlijk niet wat jij denkt dat het doet ;)

Owh, it went away ....

[ Voor 7% gewijzigd door farlane op 25-01-2019 23:07 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Grijs
  • Registratie: Mei 2018
  • Laatst online: 24-01-2024
farlane schreef op vrijdag 25 januari 2019 @ 23:06:
Python:
1
2
if len(word) > 0 and word.isalpha() and not 'stop':
    ...stuff....

Dit doet waarschijnlijk niet wat jij denkt dat het doet ;)
Nee idd :)

:)


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 17:16
http://interactivepython....ngs/StringComparison.html

Ben je toch niet een complete nietsnut ;)

We zijn allemaal zo begonnen he....geen schande om jezelf als beginner te positioneren maar overdrijven is ook niet nodig :)

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • +1 Henk 'm!

  • Grijs
  • Registratie: Mei 2018
  • Laatst online: 24-01-2024
farlane schreef op vrijdag 25 januari 2019 @ 23:11:

We zijn allemaal zo begonnen he....geen schande om jezelf als beginner te positioneren maar overdrijven is ook niet nodig :)
sorry. heb het nu zelf opgelost, had gewoon iets beter moeten nadenken :) (werkt alleen als je stop in kleine letters typt, maar we komen ergens)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
print('Welkom bij de PygLatin vertaler!')

pyg = 'ay'

while True:
    break_it = "stop"
    word = input("typ een woord: ")
    if len(word) > 0 and word.isalpha() and word != 'stop':
        lower = word.lower()
        first = lower[0]
        new_word = lower + first + pyg
        new_word = new_word[1:len(new_word)]
        print(new_word)
    elif break_it in word:
        break
    else:
        print('verkeerd woord, probeer opnieuw.')

[ Voor 4% gewijzigd door Grijs op 25-01-2019 23:17 ]

:)


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 17:16
Grijs schreef op vrijdag 25 januari 2019 @ 23:16:
[...]

sorry. heb het nu zelf opgelost, had gewoon iets beter moeten nadenken :)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
print('Welkom bij de PygLatin vertaler!')

pyg = 'ay'

while True:
    break_it = "stop"
    word = input("typ een woord: ")
    if len(word) > 0 and word.isalpha() and word != 'stop':
        lower = word.lower()
        first = lower[0]
        new_word = lower + first + pyg
        new_word = new_word[1:len(new_word)]
        print(new_word)
    elif break_it in word:
        break
    else:
        print('verkeerd woord, probeer opnieuw.')
Misschien dat je de controle op stop voor de eerste check kunt zetten, dan kun je break_it en all that verwijderen:

Python:
1
2
3
4
5
6
while True:
    word = input("typ een woord: ")
    if word == 'stop':
        break
    else:
        ...stuff...

[ Voor 20% gewijzigd door farlane op 25-01-2019 23:21 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Grijs
  • Registratie: Mei 2018
  • Laatst online: 24-01-2024
Het is me zelfs nog gelukt om hem case-insensitive te maken :9
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
print('Welkom bij de PygLatin vertaler!')

pyg = 'ay'

while True:
    word = input("typ een woord: ")
    if len(word) > 0 and word.isalpha() and word.lower() != 'stop':
        lower = word.lower()
        first = lower[0]
        new_word = lower + first + pyg
        new_word = new_word[1:len(new_word)]
        print(new_word)
    elif 'stop' in word.lower():
        break
    else:
        print('verkeerd woord, probeer opnieuw.')


eigenlijk makkelijker dan verwacht, sorry voor het redelijk nutteloze topic

:)


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Hij gaat nog steeds af op 'stop123', is dat de bedoeling?

Acties:
  • 0 Henk 'm!

  • Grijs
  • Registratie: Mei 2018
  • Laatst online: 24-01-2024
GlowMouse schreef op vrijdag 25 januari 2019 @ 23:46:
Hij gaat nog steeds af op 'stop123', is dat de bedoeling?
nope, maar heb ik nu gefixt door de 'in' weg te halen en te veranderen naar
code:
1
 elif word.lower() == 'stop':


Volgens mij is ie nu goed, moet volgende keer wat beter gaan checken op dat soort bugs.

:)


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Je zou de if en elif kunnen omdraaien. Je hoeft dan niet 2x te checken op stop.

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 17:16
GlowMouse schreef op zaterdag 26 januari 2019 @ 00:17:
Je zou de if en elif kunnen omdraaien. Je hoeft dan niet 2x te checken op stop.
farlane schreef op vrijdag 25 januari 2019 @ 23:17:
[...]


Misschien dat je de controle op stop voor de eerste check kunt zetten, dan kun je break_it en all that verwijderen:

Python:
1
2
3
4
5
6
while True:
    word = input("typ een woord: ")
    if word == 'stop':
        break
    else:
        ...stuff...

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Grijs
  • Registratie: Mei 2018
  • Laatst online: 24-01-2024
ahh oké, dat is inderdaad wel slim ja. zal het aanpassen.

:)


Acties:
  • 0 Henk 'm!

  • Killah_Priest
  • Registratie: Augustus 2001
  • Nu online
Waarom doe je de check op het stopwoord niet in je while statement? Ik ken de syntax van python niet zo goed maar in een C taal zou het iets als while (word != "stop") zijn.

Acties:
  • 0 Henk 'm!

  • Grijs
  • Registratie: Mei 2018
  • Laatst online: 24-01-2024
Killah_Priest schreef op zaterdag 26 januari 2019 @ 17:37:
Waarom doe je de check op het stopwoord niet in je while statement? Ik ken de syntax van python niet zo goed maar in een C taal zou het iets als while (word != "stop") zijn.
Maar dan moet je toch alsnog de elif statement houden? Of mis ik iets?

:)


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 17:16
Grijs schreef op zaterdag 26 januari 2019 @ 18:26:
[...]

Maar dan moet je toch alsnog de elif statement houden? Of mis ik iets?
Python:
1
2
3
4
5
6
word = input("typ een woord: ")
while word != 'stop':
    if ....:
        ...stuff...

    word = input("typ een woord: ")

Dat hoeft niet. Maar ik moet zeggen dat ik deze constructie niet veel cleaner vind.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Killah_Priest
  • Registratie: Augustus 2001
  • Nu online
farlane schreef op zaterdag 26 januari 2019 @ 22:27:
[...]


Python:
1
2
3
4
5
6
word = input("typ een woord: ")
while word != 'stop':
    if ....:
        ...stuff...

    word = input("typ een woord: ")

Dat hoeft niet. Maar ik moet zeggen dat ik deze constructie niet veel cleaner vind.
Je kunt de variable "word" toch ook gewoon buiten de while loop als een lege string declaren zodat de variable in ieder geval bestaat?
Dan ziet de code er ook direct een stukje schoner uit.

Achja, zoals altijd met programmeren, tig (correcte) wegen die naar Rome leiden.
Pagina: 1