[python] basic loop vraag als a > x break

Pagina: 1
Acties:

  • wd200
  • Registratie: Juni 2005
  • Laatst online: 22:34
Ok mensen,

deze vraag is misschien voor sommige hier heel erg basic maar ik ben er al 3u+ mee bezig dus ik vond van mij zelf dat ik om hulp mocht vragen.
Ik kom er dus echt niet uit.

Ik wil een script die het aantal van x weergeeft als de waarde van een getal verdubbeld is.
dus simpel dacht ik

waarbij hij berekend a*1.06**x

Er moet bij x elke keer een bijkomen net zo lang tot de waarde van de formulie het dubbele is van de waarde van een hard ingevoerd getal
(er komt elke keer 6% bij)

Het script dat ik nu heb is

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
b = 0
start = 100
maxg = start * 2
geld = start*1.06**b

while maxg > geld:
    b = b+1

    if geld > maxg :
         break

    print  geld,b

offtopic:
(tussen php script voor duidelijkheid.. is er ook een neutraal wat ik kan gebruiken voor scripts)

Mijn uitvoer moest worden

2xx.xx , 12

want bij b = 12 is geld > maxg


AUB gooi dit topic niet dicht met de medeling ga eens turtorials lezen want dat heb ik gedaan.
Ik heb meerdere turturials gelezen over if, while else etc en ik kom steeds op mijn conlusie uit.

[ Voor 15% gewijzigd door wd200 op 06-06-2007 22:16 ]


  • Daspeed
  • Registratie: Maart 2001
  • Laatst online: 23:33
wd200 schreef op woensdag 06 juni 2007 @ 19:21:
Ok mensen,

deze vraag is heel basic maar ik ben er al 3u+ mee bezig dus ik vond van mij zelf dat ik om hulp mocht vragen.

Ik wil script die het aan x weergeeft waarbij a verdubbeld is.
dus simpel dacht ik

waarbij hij berekend a*1.06**x

waarbij er bij x steeds een bij komt tot de waarde van de berekening het dubbele is van a
(er komt elke keer 6% bij)

Mijn script die ik nu heb is

Mijn uitvoer moest worden

2xx.xx , 12

want bij b = 12 is geld > maxg


AUB gooi dit topic niet dicht met de medeling ga eens turtorials lezen want dat heb ik gedaan.
Ik heb meerdere turturials gelezen over if, while else etc en ik kom steeds op mijn conlusie uit.
Dit klinkt misschien wat onvriendelijk, maar zou je misschien je probleem in helder Nederlands kunnen formuleren? Ik begrijp er werkelijk waar helemaal niets van.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
wd200 schreef op woensdag 06 juni 2007 @ 19:21:
offtopic:
(tussen php script voor duidelijkheid.. is er ook een neutraal wat ik kan gebruiken voor scripts)
code tags
En inderdaad: verduidelijk gerust even je topic ietwat ;) (Afbeeldingslocatie: http://gathering.tweakers.net/global/templates/tweakers/images/icons/edit.gif)

Overigens ben je vaak genoeg op onze Programming Beleid Quickstart gewezen om dat ondertussen te moeten weten.

[ Voor 27% gewijzigd door RobIII op 06-06-2007 19:32 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • djc
  • Registratie: December 2001
  • Laatst online: 08-09 23:18

djc

God, wat een brakke topicstart.

Maar ik gok dat je je "geld = (...)" regeltje in de while-loop moet zetten. Heeft ook eigenlijk geen reet met Python te maken, meer met pure algoritmische kennis/ervaring.

Rustacean


  • wd200
  • Registratie: Juni 2005
  • Laatst online: 22:34
Ik had de SP toch beter na moeten lezen, ik heb er nu het eea aan toegevoegd en hopelijk verbeterd zodat het gesnapt wordt.

  • Daspeed
  • Registratie: Maart 2001
  • Laatst online: 23:33
Python:
1
2
3
4
5
6
7
8
9
10
11
12
b = 0 # b krijgt waarde 0
start = 100 # start krijgt waarde 100
maxg = start * 2 # maxg krijgt waarde 100 * 2 = 200
geld = start*1.06**b # geld krijgt waarde 100 * 1.06 ** 0 = 100

while maxg > geld: # zolang maxg (200) groter is dan geld (100)
    b = b+1 # hoog b 1 op

    if geld > maxg : # als geld (100) groter is dan maxg (200)
         break # stop de loop

    print  geld,b # print de zooi, in dit geval, 100, b


Uitvoer: oneindige loop
code:
1
2
3
4
5
6
100.0 1
100.0 2
100.0 3
100.0 4
100.0 5
100.0 etc...


Logisch, want je komt nooit uit de while als je de gerelateerde variabelen nooit verandert.

Misschien zou je jezelf en ons kunnen helpen als je even goed nadenkt over wat je probleem nu eigenlijk is en wat je met je code wilt bereiken. Ik zie ook geen vraag in je topic start?

  • wd200
  • Registratie: Juni 2005
  • Laatst online: 22:34
DrClearbottom schreef op woensdag 06 juni 2007 @ 23:07:
Python:
1
2
3
4
5
6
7
8
9
10
11
12
b = 0 # b krijgt waarde 0
start = 100 # start krijgt waarde 100
maxg = start * 2 # maxg krijgt waarde 100 * 2 = 200
geld = start*1.06**b # geld krijgt waarde 100 * 1.06 ** 0 = 100

while maxg > geld: # zolang maxg (200) groter is dan geld (100)
    b = b+1 # hoog b 1 op

    if geld > maxg : # als geld (100) groter is dan maxg (200)
         break # stop de loop

    print  geld,b # print de zooi, in dit geval, 100, b


Uitvoer: oneindige loop
code:
1
2
3
4
5
6
100.0 1
100.0 2
100.0 3
100.0 4
100.0 5
100.0 etc...


Logisch, want je komt nooit uit de while als je de gerelateerde variabelen nooit verandert.

Misschien zou je jezelf en ons kunnen helpen als je even goed nadenkt over wat je probleem nu eigenlijk is en wat je met je code wilt bereiken. Ik zie ook geen vraag in je topic start?
Mijn vraag is vooral WAAROM de oneindige loop.

Ik zie de logica niet, hij verhoogd B met 1 dus moet

de berekening van 100 * 1.06 ** B(0) = 100

Uiteindelijk uitkomen op 100*1.06**12 = 2xx
Op dat moment is geld > maxg dus moet de break uitgevoerd worden.
Maar het is mij niet duidelijk WAAROM die dat niet doet.

Mijn vraag luid dan ook wat doe ik fout

  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 28-11 19:51

DeMoN

Pastafari

wd200 schreef op woensdag 06 juni 2007 @ 23:16:
[...]


Mijn vraag is vooral WAAROM de oneindige loop.

Ik zie de logica niet, hij verhoogd B met 1 dus moet

de berekening van 100 * 1.06 ** B(0) = 100

Uiteindelijk uitkomen op 100*1.06**12 = 2xx
Op dat moment is geld > maxg dus moet de break uitgevoerd worden.
Maar het is mij niet duidelijk WAAROM die dat niet doet.

Mijn vraag luid dan ook wat doe ik fout
Wijs mij eens aan waar je geld binnen de while loop verhoogt? ;)

In je nu foute code print je zelf geld. Je ziet toch zelf ook dat geld gewoon 100 blijft? :)

Zet ze er eens in:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
b = 0 # b krijgt waarde 0
start = 100 # start krijgt waarde 100

while maxg > geld: # zolang maxg (200) groter is dan geld (100)
    maxg = start * 2 # LET OP, ZE STAAN ER NU DUS BINNEN
    geld = start*1.06**b # ^^
    b = b+1 # hoog b 1 op

    if geld > maxg : # als geld (100) groter is dan maxg (200)
         break # stop de loop

    print  geld,b # print de zooi, in dit geval, 100, b

Doet dit wat je wilt?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
>>> 
100.0 1
106.0 2
112.36 3
119.1016 4
126.247696 5
133.82255776 6
141.851911226 7
150.363025899 8
159.384807453 9
168.9478959 10
179.084769654 11
189.829855834 12

[ Voor 40% gewijzigd door DeMoN op 06-06-2007 23:21 ]

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • wd200
  • Registratie: Juni 2005
  • Laatst online: 22:34
DeMoN schreef op woensdag 06 juni 2007 @ 23:19:
[...]


Wijs mij eens aan waar je geld binnen de while loop verhoogt? ;)

In je nu foute code print je zelf geld. Je ziet toch zelf ook dat geld gewoon 100 blijft? :)
Aha dus dat was mijn fout.. stom stom stom.

Harstikke bedankt :D

goed leermoment

Alleen nu wil Python Scripter hem zo niet runnen omdat Geld niet gedefinineerd is.

oplossing hier op


boven in
code:
1
2
3
4
b = 0 ## b krijgt waarde 0
start = 100 ## start krijgt waarde 100
geld = start*1.06
maxg = start *2

[ Voor 48% gewijzigd door wd200 op 06-06-2007 23:48 ]


  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 28-11 19:51

DeMoN

Pastafari

wd200 schreef op woensdag 06 juni 2007 @ 23:36:
[...]


Aha dus dat was mijn fout.. stom stom stom.

Harstikke bedankt :D
np :)
Alleen nu wil Python Scripter hem zo niet runnen omdat Geld niet gedefinineerd is.
Ah, duh |:( Copy / paste fout van mij, hoe kom ik anders aan die output :P

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • Swaptor
  • Registratie: Mei 2003
  • Laatst online: 15-10 19:25

Swaptor

Java Apprentice

offtopic:
Je kunt het cijfer 12 toch ook gewoon uitrekenen als je round(1.06log2) doet?
Scheelt je ook weer een loopje ;)

Ontdek mij!
Proud NGS member
Stats-mod & forum-dude


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
code:
1
2
while ... 
    maxg = start * 2 # LET OP, ZE STAAN ER NU DUS BINNEN


Volgens mij hoeft die niet binnen de loop ?

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.


  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 28-11 19:51

DeMoN

Pastafari

farlane schreef op donderdag 07 juni 2007 @ 09:20:
code:
1
2
while ... 
    maxg = start * 2 # LET OP, ZE STAAN ER NU DUS BINNEN


Volgens mij hoeft die niet binnen de loop ?
Nu ik er met een frisse kop naar kijk zie ik dat het idd nergens op slaat.
Het kan geen kwaad, maar is wel onnodig ranzig ;)

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 19:51

Robtimus

me Robtimus no like you

DeMoN schreef op woensdag 06 juni 2007 @ 23:19:
PHP:
1
2
3
4
[...]
    geld = start*1.06**b # ^^
    b = b+1 # hoog b 1 op
[...]
Aangezien machtsverheffen vrij zwaar kan zijn, is het wellicht een idee om geld gewoon met 1.06 te vermenigvuldigen elke look: geld = geld * 1.06

More than meets the eye
There is no I in TEAM... but there is ME
system specs

Pagina: 1