robert wrote:
> if 1/2:
> print "yes"
> else:
> print "no"
....
> no
Dat klopt toch?
--
Inca
NEE - Geen talent
JA - Wel een single
http://www.poldermodelstickers.nl/
Likes: 0
robert wrote:
> if 1/2:
> print "yes"
> else:
> print "no"
....
> no
Dat klopt toch?
--
Inca
NEE - Geen talent
JA - Wel een single
http://www.poldermodelstickers.nl/
Inca <shadow*movements@wanadoo.NOSPAM.invalid>:
> robert wrote:
>> if 1/2:
>> print "yes"
>> else:
>> print "no"
> ...
>> no
>
> Dat klopt toch?
Jij vindt het logisch dat 1/2 'false' oplevert?
--
robert
robert wrote:
> Jij vindt het logisch dat 1/2 'false' oplevert?
Ja. Bij een int-deling (en dat is 1/2) krijg je het aantal gehele keren dat
2 in 1 past. Dus 0. Dus false.
--
Inca
NEE - Geen talent
JA - Wel een single
http://www.poldermodelstickers.nl/
Inca <shadow*movements@wanadoo.NOSPAM.invalid>:
> robert wrote:
>> Jij vindt het logisch dat 1/2 'false' oplevert?
>
> Ja. Bij een int-deling (en dat is 1/2) krijg je het aantal gehele keren
> dat 2 in 1 past. Dus 0. Dus false.
En waarom is het logisch dat 1/2 een integerdeling is?
--
robert
Inca:
>robert:
>> Jij vindt het logisch dat 1/2 'false' oplevert?
>
>Ja. Bij een int-deling (en dat is 1/2) krijg je het aantal gehele keren dat
>2 in 1 past. Dus 0. Dus false.
1/2 is 5/10 ofwel 0,5. Dat leren kinderen van 11 (ofzo). Het is heel
merkwaardig dat in programmeertalen van de
lagere/middelbareschool-wiskunde wordt afgeweken.
Net zoals het zeer merkwaardig is dat het meest basale datatype van de
informatica en formele logica, de boolean, in veel programmeertalen en
databases pas in de zoveelste versie als afterthought is toegevoegd.
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Rene Pijlman wrote:
>> Ja. Bij een int-deling (en dat is 1/2) krijg je het aantal gehele
>> keren dat 2 in 1 past. Dus 0. Dus false.
>
> 1/2 is 5/10 ofwel 0,5. Dat leren kinderen van 11 (ofzo). Het is heel
> merkwaardig dat in programmeertalen van de
> lagere/middelbareschool-wiskunde wordt afgeweken.
Tsja, maar daar/voor/ leren ze dat 1 gedeeld door 2 nul is, met rest 1. En
dat is precies weer die int-deling. Breuken etc komen pas veel later.
--
Inca
NEE - Geen IKEA
JA - Wel SWEN
http://www.poldermodelstickers.nl/
Inca <shadow*movements@wanadoo.NOSPAM.invalid>:
> Rene Pijlman wrote:
>>> Ja. Bij een int-deling (en dat is 1/2) krijg je het aantal gehele
>>> keren dat 2 in 1 past. Dus 0. Dus false.
>>
>> 1/2 is 5/10 ofwel 0,5. Dat leren kinderen van 11 (ofzo). Het
>> is heel merkwaardig dat in programmeertalen van de
>> lagere/middelbareschool-wiskunde wordt afgeweken.
>
> Tsja, maar daar/voor/ leren ze dat 1 gedeeld door 2 nul is, met rest
> 1. En dat is precies weer die int-deling. Breuken etc komen pas veel
> later.
Ik vraag niet aan Python het aantal gehele keren dat 2 in 1 past, ik vraag
wat 1 gedeeld door 2 is. Net als het niet logisch is om '0' false te maken
is standaard integerdeling ook niet logisch.
--
robert
robert wrote:
> Ik vraag niet aan Python het aantal gehele keren dat 2 in 1 past, ik
> vraag wat 1 gedeeld door 2 is. Net als het niet logisch is om '0'
> false te maken is standaard integerdeling ook niet logisch.
Definieer logisch?
In de c(++) documentatie staat heel duidelijk dat dat nu precies is wat je
vraagt. Wil je dat niet dan moet je 1 van beide integers naar een float
converteren.
In de python-documentatie ben ik niet zo thuis, maar het lijkt me dat dat
hetzelfde is:
" One other thing to note:
>>> print 5/2
results in a whole number (integer) result (i.e. 2). This is because Python
sees that the numbers are whole numbers and assumes you want to keep them
that way. "
http://www.freenetpages.co.uk/hp/alan.gauld/
Misschien /wil/ je het niet vragen, maar dat doe je dus wel, volgens de
syntaxregels van de taal.
--
Inca
NEE - Geen buitenlanders
JA - Wel shoarma
http://www.poldermodelstickers.nl/
Inca <shadow*movements@wanadoo.NOSPAM.invalid>:
> robert wrote:
>> Ik vraag niet aan Python het aantal gehele keren dat 2 in 1 past, ik
>> vraag wat 1 gedeeld door 2 is. Net als het niet logisch is om '0' false
>> te maken is standaard integerdeling ook niet logisch.
>
> Definieer logisch?
Dusdanig dat ik niet na hoef te denken of de gebruikte programmeertaal zelf
gaat afronden.
> In de c(++) documentatie staat heel duidelijk dat dat nu precies is wat
> je vraagt. Wil je dat niet dan moet je 1 van beide integers naar een
> float converteren.
C en C++ zijn wat dat betreft gewoon ouderwets, met hun "alles is een
integer" aanpak.
> In de python-documentatie ben ik niet zo thuis, maar het lijkt me dat
> dat hetzelfde is:
> " One other thing to note:
>>>> print 5/2
> results in a whole number (integer) result (i.e. 2). This is because Python
> sees that the numbers are whole numbers and assumes you want to keep them
> that way. "
Ik kan de logica daarachter niet vinden: ik deel het ene getal door het
andere, en dan verwacht ik een wiskundig kloppend antwoord.
> Misschien /wil/ je het niet vragen, maar dat doe je dus wel, volgens de
> syntaxregels van de taal.
Dezelfde taal die wordt gebruikt om te laten zien hoe debiel PHP is...
--
robert
Inca <shadow*movements@wanadoo.nospam.invalid> wrote:
>> Ik vraag niet aan Python het aantal gehele keren dat 2 in 1 past, ik
>> vraag wat 1 gedeeld door 2 is. Net als het niet logisch is om '0'
>> false te maken is standaard integerdeling ook niet logisch.
>
> Definieer logisch?
> In de python-documentatie ben ik niet zo thuis, maar het lijkt me dat dat
> hetzelfde is:
> " One other thing to note:
>>>> print 5/2
> results in a whole number (integer) result (i.e. 2). This is because Python
> sees that the numbers are whole numbers and assumes you want to keep them
> that way. "
maar python is toch volledig OO! Dat betkent toch dat 1/2 een object
naar een integer met de waarde 0 oplevert. Het object bestaat en dus
dient 1/2 true op te leveren! Of is python weer zo'n vage halve
implementatie?
--
Daniel Tryba
Daniel Tryba <news_nl.internet.www.server-side@canopus.nl>:
> maar python is toch volledig OO! Dat betkent toch dat 1/2 een object
> naar een integer met de waarde 0 oplevert. Het object bestaat en dus
> dient 1/2 true op te leveren!
Zodat een Boolean-object met waarde false ook true oplevert?
--
robert
robert wrote:
> Inca <shadow*movements@wanadoo.NOSPAM.invalid>:
> > robert wrote:
> >> Ik vraag niet aan Python het aantal gehele keren dat 2 in 1 past, ik
> >> vraag wat 1 gedeeld door 2 is. Net als het niet logisch is om '0' false
> >> te maken is standaard integerdeling ook niet logisch.
> >
> > Definieer logisch?
>
> Dusdanig dat ik niet na hoef te denken of de gebruikte programmeertaal zelf
> gaat afronden.
>
> > In de c(++) documentatie staat heel duidelijk dat dat nu precies is wat
> > je vraagt. Wil je dat niet dan moet je 1 van beide integers naar een
> > float converteren.
>
> C en C++ zijn wat dat betreft gewoon ouderwets, met hun "alles is een
> integer" aanpak.
Nee hoor, het is gewoon heel logisch. In java is het overigens ook
zo. Als je integers op elkaar deelt krijg je een integer, als je reals
op elkaar deelt krijg je een real.
Mark
Daniel Tryba:
>maar python is toch volledig OO!
Als je met "volledig" bedoelt dat er uitsluitend objecten bestaan in de
zin van "een instantie van een klasse" dan moet ik je teleurstellen.
"I also have to warn you that there's a terminological pitfall for
object-oriented readers: the word ``object'' in Python does not
necessarily mean a class instance. Like C++ and Modula-3, and unlike
Smalltalk, not all types in Python are classes: the basic built-in types
like integers and lists are not, and even somewhat more exotic types like
files aren't."
http://www.python.org/doc/2.3.2/tut/...00000000000000
>Of is python weer zo'n vage halve implementatie?
Van wat?
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Inca:
>Rene Pijlman wrote:
>> 1/2 is 5/10 ofwel 0,5. Dat leren kinderen van 11 (ofzo). Het is heel
>> merkwaardig dat in programmeertalen van de
>> lagere/middelbareschool-wiskunde wordt afgeweken.
>
>Tsja, maar daar/voor/ leren ze dat 1 gedeeld door 2 nul is, met rest 1.
Dat is een didactische tussenstap, die later onjuist blijkt. Zoals de
ooievaar die kindertjes brengt.
Datzelfde kan van de bewering 1/2 = 0,5 niet gezegd worden. Die houdt in
alle mij bekende varianten van de wiskunde stand. In ieder geval in de
reëele en complexe getallen.
Ik refereer dan wel aan de basisschool, maar er is natuurlijk een zeker
minimumniveau nodig om te kunnen programmeren :-)
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Inca:
>robert:
>> Ik vraag niet aan Python het aantal gehele keren dat 2 in 1 past, ik
>> vraag wat 1 gedeeld door 2 is.
>Misschien /wil/ je het niet vragen, maar dat doe je dus wel, volgens de
>syntaxregels van de taal.
Zo simpel ligt dat niet. De operator heeft geen type, dat hebben de
operanden. En die kunnen in Python van een onbekend type zijn, dat pas
runtime blijkt. Dan is het heel onhandig dat a/b een heel ander resultaat
oplevert wanneer a en b de float waarden 1.0 en 2.0 hebben i.p.v. de
integerwaarden 1 en 2.
" The current division (/) operator has an ambiguous meaning for
numerical arguments: it returns the floor of the mathematical
result of division if the arguments are ints or longs, but it
returns a reasonable approximation of the division result if the
arguments are floats or complex. This makes expressions expecting
float or complex results error-prone when integers are not
expected but possible as inputs.
[...]
The problem is unique to dynamically typed languages: in a
statically typed language like C, the inputs, typically function
arguments, would be declared as double or float, and when a call
passes an integer argument, it is converted to double or float at
the time of the call. Python doesn't have argument type
declarations, so integer arguments can easily find their way into
an expression.
The problem is particularly pernicious since ints are perfect
substitutes for floats in all other circumstances [...]"
http://www.python.org/peps/pep-0238.html
--
René Pijlman
Wat wil jij leren? http://www.leren.nl