[Python] Waarom 'SyntaxError: unexpected EOF while parsing'

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Witte Haai
  • Registratie: September 2011
  • Laatst online: 15-09-2022
Beginnend met Python programmeren, wil ik de stelling van Pythagoras in code zetten.
De code onderaan, is wat ik reeds heb opgezet; Daaronder de syntax-foutmelding.

Wie heeft er een hint, waarom ik deze code niet werkend krijg?

Ik gebruik Python 3.6.1, en m'n IDE is: Thonny (door de universiteit van Tartu, Estland opgezet voor Python-beginners).
Opgave uit: 'De Programmeursleerling: Leren coderen met Python 3'

code:
1
2
3
4
5
6
nummer_a = input( "Geef een getal voor a: " )
nummer_b = input( "Geef een getal voor b: " )

import math

print( "c is: ", ( math.sqrt(  ( nummer_a * nummer_a ) + ( nummer_b * nummer_b ) ) )


geeft deze foutmelding:

code:
1
SyntaxError: unexpected EOF while parsing

Beste antwoord (via Witte Haai op 12-06-2017 07:08)


  • Room42
  • Registratie: September 2001
  • Niet online
Witte Haai schreef op zondag 11 juni 2017 @ 18:05:
[...]


Waar 'int' voor staat: Nee, dat weet ik niet.
Integer. Oftewel een rond getal.
Maar 'str' staat meen ik voor string.
Klopt :)

Je kunt dus geen niet-integer (string) vermenigvuldigen. Een of meer variabelen is dus een string. Deze moet je eerst converteren naar integer :)

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron

Alle reacties


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Tel je haakjes eens 8)7

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • Witte Haai
  • Registratie: September 2011
  • Laatst online: 15-09-2022
Man, man, man, dat het gewoon een haakje te veel was...

Thanx, heb ik gecorrigeerd. Maar nu krijg ik deze foutmelding:

code:
1
TypeError: can't multiply sequence by non-int of type 'str'

Acties:
  • +1 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 07-10 16:34
Duidelijk toch?
Je kan niet vermenigvuldigen met een string, staat er.

[ Voor 4% gewijzigd door frickY op 06-11-2019 18:59 ]


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Witte Haai schreef op zondag 11 juni 2017 @ 17:22:
Man, man, man, dat het gewoon een haakje te veel was...

Thanx, heb ik gecorrigeerd. Maar nu krijg ik deze foutmelding:

code:
1
TypeError: can't multiply sequence by non-int of type 'str'
Weet je wat een int is?
Weet je wat een str is?

[ Voor 2% gewijzigd door Room42 op 11-06-2017 17:33 . Reden: Anders geformuleerd om het wat minder denigrerend over te laten komen, want dat was niet de bedoeling. ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • Witte Haai
  • Registratie: September 2011
  • Laatst online: 15-09-2022
Room42 schreef op zondag 11 juni 2017 @ 17:32:
[...]

Weet je wat een int is?
Weet je wat een str is?
Waar 'int' voor staat: Nee, dat weet ik niet.
Maar 'str' staat meen ik voor string.

Edit1: 'non-int' zal natuurlijk wel staan voor: Geen integer.

Edit2: Uiteindelijk bleek dit de juiste werkende code te zijn:

code:
1
2
3
4
5
6
import math

side_a = int( input( "Geef een getal voor a: " ) )
side_b = int( input( "Geef een getal voor b: " ) )

print( "c is: ", ( math.sqrt( side_a ** 2 ) ) + ( int( side_b  ** 2 ) ) )

[ Voor 41% gewijzigd door Witte Haai op 12-06-2017 23:18 ]


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Witte Haai schreef op zondag 11 juni 2017 @ 18:05:
[...]


Waar 'int' voor staat: Nee, dat weet ik niet.
Integer. Oftewel een rond getal.
Maar 'str' staat meen ik voor string.
Klopt :)

Je kunt dus geen niet-integer (string) vermenigvuldigen. Een of meer variabelen is dus een string. Deze moet je eerst converteren naar integer :)

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • Elijan9
  • Registratie: Februari 2004
  • Laatst online: 08-10 15:52
Beetje laat misschien, maar je kunt hier ook gewoon float gebruiken voor nummer_a en nummer_b. De reden dat hier expliciet 'int' genoemd wordt is omdat je een string als linker argument alleen maar met een int kan vermenigvuldigen, in dat geval herhaal je die string een aantal keer, dus:
Python:
1
2
l = 'all work and no play makes jack a dull boy.\n'
print(l * 100)

[ Voor 5% gewijzigd door Elijan9 op 13-06-2017 08:59 ]

War is when the young and stupid are tricked by the old and bitter into killing each other. - Niko Bellic


Acties:
  • 0 Henk 'm!

  • Neko Koneko
  • Registratie: December 2006
  • Niet online
(overleden)
Witte Haai schreef op zondag 11 juni 2017 @ 17:22:
Man, man, man, dat het gewoon een haakje te veel was...

Thanx, heb ik gecorrigeerd. Maar nu krijg ik deze foutmelding:

code:
1
TypeError: can't multiply sequence by non-int of type 'str'
Ik heb geen verstand van Python maar een beetje IDE zou moeten gaan gillen bij te weinig haakjes, wellicht dat er voor Python ook een IDE is die je met dat soort dingen kan helpen? (ga ervan uit dat je nu in Notepad++ oid werkt of in ieder geval een programma dat niet je syntax controleert).

End-users are clingy complaining dipshits who will never ever be grateful for any concession you make. The moment you shut out their shrill, tremulous voices, the happier you will be for it.


Acties:
  • 0 Henk 'm!

  • kevintjeb
  • Registratie: Juli 2013
  • Laatst online: 10-01 14:42
Voor python zou je naar Pycharm kunnen kijken als IDE. Dit is een product van netbrains (o.a. intelliJ, clion etc). Ik ben er heel erg enthousiast over!
Pagina: 1