Nieuws:

We zijn er weer.

Na lange tijd van afwezigheid zijn we er weer  :laugh:
We hebben alle wachtwoorden gereset, je oude wachtwoord werkt niet meer.Je moet via het "wachtwoord vergeten"-linkje je wachtwoord resetten. Je krijgt hiervoor een mailtje op het adres dat je bij ons geregistreerd hebt.

De komende tijd zijn we nog druk bezig om de rest van de site op te bouwen, dus het kan zijn dat sommige onderdelen (tijdelijk) niet werken.

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

Auteur Topic: Python probleempje  (gelezen 3320 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
  • Steunpunt: Nee
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
  • Steunpunt: Nee
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

Offline Nunslaughter

  • Lid
    • timovwb
  • Steunpunt: Nee
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
  • Steunpunt: Nee
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
  • Steunpunt: Nee
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