Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Python probleempje  (gelezen 3999 keer)

Adje_

  • Gast
Python probleempje
« Gepost op: 2008/10/17, 17:22:04 »
Hoi luitjes,

nogal suf waarschijnlijk, maar kom er zelf niet uit.
Ben begonnen met het programmeren in Python (verder nog geen programeerervaring overigens), maar zelfs bij een zeer eenvoudig programmaatje wat ik geschreven hebt gaat het al mis.
Het lukt me nl. niet om Python een deling uit te laten voeren. Deuitkomst is steeds 0. Het gaat om de deling dit stukje:

dag=int(raw_input())
tot=int(28-dag)
kans=100*(1/tot)

zelfs wanneer ik interactief iets als
>>> 1/10 ingeef, geeft python een uitkomst van 0.
Weten jullie wellicht wat ik verkeerd doe?

Alvast bedankt!

Offline Rulus

  • Lid
Python probleempje
« Reactie #1 Gepost op: 2008/10/17, 17:43:03 »
Dat komt omdat Python de uitkomt van 1/10 beschouwt als een integer (geheel getal), geen float (kommagetal). Als je 1.0/10.0 doet krijg je als resultaat wel 0.10000000000000001

Dit zou dan ook beter moeten werken:
dag = float(raw_input())
tot = 28 - dag
kans = 100 * (1/tot)

Speedboy

  • Gast
Python probleempje
« Reactie #2 Gepost op: 2008/10/17, 17:46:05 »
Je typt ook beter met wat meer spaties, python kan daar nogal gevoellig voor zijn.

Offline commandoline

  • LoCo-contact
    • marten-de-vries
    • Marten-de-Vries.nl
Python probleempje
« Reactie #3 Gepost op: 2008/10/17, 18:06:43 »
Nog 1 tip:

In plaats van int(raw_input()) kun je ook input() gebruiken, dat scheelt weer typen ;)

Marten

Python probleempje
« Reactie #4 Gepost op: 2008/10/17, 19:15:12 »
Citaat van: commandoline
Nog 1 tip:

In plaats van int(raw_input()) kun je ook input() gebruiken, dat scheelt weer typen ;)

Marten
Ik dacht nochtans gelezen te hebben om altijd raw_input() te gebruiken. Weet niet meer waarom, zal straks eens even zoeken.

Adje_

  • Gast
Python probleempje
« Reactie #5 Gepost op: 2008/10/17, 21:03:15 »
super zeg, hartelijk bedankt. werkt volkomen inmiddels!

Offline Kiwinote

  • Lid
    • Launchpad
Python probleempje
« Reactie #6 Gepost op: 2008/10/18, 09:41:31 »
Wat je ook kunt doen is hetvolgende helemaal bovenaan je programma (dus als 1e regel) zetten:from __future__ import divisionWanneer je met python 2.5 bovenstaande regel gebruikt krijg je hetzelfde gedrag als in python 3.0 aanwezig zal zijn. Daar werkt het delen wel gewoon "normaal".

Offline commandoline

  • LoCo-contact
    • marten-de-vries
    • Marten-de-Vries.nl
Python probleempje
« Reactie #7 Gepost op: 2008/10/21, 10:53:45 »
Citaat van: Nunslaughter
Ik dacht nochtans gelezen te hebben om altijd raw_input() te gebruiken. Weet niet meer waarom, zal straks eens even zoeken.
Misschien omdat je dan met try..except kan nagaan of wat je hebt ingevoerd een cijfer is, maar als je dat toch niet doet, zoals hier, heeft het volgens mij geen nadelen, als ze er wel zijn hoor ik ze graag.

Marten