Toon posts:

Loop in pythonprogramma geeft steeds error

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik moest voor een schoolopdracht een soort programma maken die controleert of nummers ijdel zijn. Dit is tot zoverre gelukt maar ik moet er een loop in zien te krijgen, zodat als je op het eind ja typt, elke keer die vragen over de nummers opnieuw worden gesteld. Ik probeer een soort loop te regelen maar het werkt niet. Kan iemand mij hiermee helpen pls?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
print("Hallo gebruiker, welkom!")
print("Met dit programma is het mogelijk om te checken ")
print("of een getal ijdel is of niet.")
print("")


def vraagGetal():
      print("")
      print("Kies tussen de getallen 0 t/m 9.")
      print("")
      Getal = int(input("Voer uw 1e getal in: "))
      while Getal < 0.0 or Getal > 9.0:
          Getal = float(input("Dit getal is niet tussen 0 t/m 9!: "))
      return Getal


def vraagGetal2():
      Getal2 = int(input("Voer het 2e getal in: "))
      while Getal2 < 0.0 or Getal2 > 9.0:
          Getal2 = float(input("Dit getal is niet tussen 0 t/m 9!: "))
      return Getal2


  #Hoofdprogramma
Getal1 = vraagGetal()
Getal2 = vraagGetal2()
print("")
print("BEREKENING:")
opgeteld = (Getal1 + Getal2)
print("De cijfers bij elkaar opgeteld= " + str(opgeteld))
print("")
vermenigvuldigd = (Getal1 * Getal2)
print("De cijfers met elkaar vermenigvuldigd= " + str(vermenigvuldigd))
print("")
if opgeteld > vermenigvuldigd:
    print('Het opgetelde getal is groter dan')
    print('het vermenigvuldigde getal.')
    print("")
    print('Dit is dus een ijdel getal')
else:
      print('Het opgetelde getal is kleiner dan')
      print('het vermenigvuldigde getal.')
      print("")
      print('Dit is dus geen ijdel getal!')
print("")
print("")


loop=input("Wilt u nog een getal checken? Typ dan 'ja' ").lower()

if loop == "ja":
    vraagGetal()
    vraagGetal2()

else:
        print("Het programma is gestopt.")
        exit()

vraagGetal()

[ Voor 0% gewijzigd door g0tanks op 16-04-2020 23:45 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 12:10

g0tanks

Moderator CSA
Ik heb je code tussen [code]-tags gezet om het leesbaarder te maken. En als je zegt dat het niet werkt is het wel handig om ook de foutmelding te plaatsen.

Los van je vraag klopt je code volgens mij ook niet. Een getal is ijdel als de twee cijfers bij elkaar opgeteld minstens zo groot zijn als de twee cijfers met elkaarvermenigvuldigd.

Ultrawide gaming setup: AMD Ryzen 7 2700X | NVIDIA GeForce RTX 2080 | Dell Alienware AW3418DW


Acties:
  • 0 Henk 'm!

Verwijderd

Zet je code tussen de code-tags (</>), zo is het niet te lezen omdat het inspringen niet te zien is. Als je een foutmelding krijgt, is het denk ik ook wel handig om even te vermelden welke foutmelding dat ook is.

Edit: ah spuit 11

Edit 2: volgens mij heb je de flow control van python nog niet helemaal begrepen (lees: ik denk dat je loop verkeerd staat). Je moet de while rondom de functies zetten die je wilt herhalen. Tip: zorg eerst dat je loopt om je input functies en ga daarna pas nadenken over hoe je de controle op ijdelheid wilt uitvoeren.

Paar andere dingen:
Waarom heb je zoveel print functies, dit komt de leesbaarheid niet ten goede.
Een variabele "loop" noemen lijkt mij niet erg best-practice.

[ Voor 58% gewijzigd door Verwijderd op 16-04-2020 23:54 ]


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
@Verwijderd Je titel praat over een error maar je code draait gewoon (python 3). Je "loop" is verre van een loop. Je vraagt gewoon of er nog een getal gevraagd moet worden maar dat doe je maar 1x. Ook verwerk je de antwoorden (de getallen) die daarna gegeven worden niet meer. :)

Zet dus ook de verwerking in een functie en bouw een degelijke loop. Hier wat inspiratie. Ik ga het niet voor je voorkauwen, want het is niet voor niks een leeropdracht! ;)

https://www.tutorialspoint.com/python/python_loops.htm
https://www.learnpython.org/en/Loops

Post gerust updates van je code voor feedback. Zet ze even tussen [code=python] en [/code] tags, dan krijg je netjes kleurtjes mee:

Python:
1
2
3
4
print("Hallo gebruiker, welkom!")
print("Met dit programma is het mogelijk om te checken ")
print("of een getal ijdel is of niet.")
print("")


offtopic:
Nog een kleinigheidje: Python is erg gevoelig voor de 'indentatie', zoals je misschien gemerkt hebt. Maar jij gebruikt verschillende afstanden op verschillende plekken. Dit werkt, zo blijkt, maar beter is het om dit overal gelijk te houden. Dat maakt de code voor jezelf en een ander ook beter leesbaar. "Industry standard" in Python is volgens mij een 'tab' van 2 spaties. Dat is in ieder geval wat ik altijd hanteer. ;)

Jouw code zou er dan zo uitzien.
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
print("Hallo gebruiker, welkom!")
print("Met dit programma is het mogelijk om te checken ")
print("of een getal ijdel is of niet.")
print("")


def vraagGetal():
  print("")
  print("Kies tussen de getallen 0 t/m 9.")
  print("")
  Getal = int(input("Voer uw 1e getal in: "))
  while Getal < 0.0 or Getal > 9.0:
    Getal = float(input("Dit getal is niet tussen 0 t/m 9!: "))
  return Getal


def vraagGetal2():
  Getal2 = int(input("Voer het 2e getal in: "))
  while Getal2 < 0.0 or Getal2 > 9.0:
    Getal2 = float(input("Dit getal is niet tussen 0 t/m 9!: "))
  return Getal2


#Hoofdprogramma
Getal1 = vraagGetal()
Getal2 = vraagGetal2()
print("")
print("BEREKENING:")
opgeteld = (Getal1 + Getal2)
print("De cijfers bij elkaar opgeteld= " + str(opgeteld))
print("")
vermenigvuldigd = (Getal1 * Getal2)
print("De cijfers met elkaar vermenigvuldigd= " + str(vermenigvuldigd))
print("")
if opgeteld > vermenigvuldigd:
  print('Het opgetelde getal is groter dan')
  print('het vermenigvuldigde getal.')
  print("")
  print('Dit is dus een ijdel getal')
else:
  print('Het opgetelde getal is kleiner dan')
  print('het vermenigvuldigde getal.')
  print("")
  print('Dit is dus geen ijdel getal!')
print("")
print("")


loop=input("Wilt u nog een getal checken? Typ dan 'ja' ").lower()

if loop == "ja":
  vraagGetal()
  vraagGetal2()
else:
  print("Het programma is gestopt.")
  exit()

vraagGetal()

[ Voor 53% gewijzigd door Room42 op 17-04-2020 03:26 ]

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