[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] Python oder Perl



Christian Selmer:
> Jochen Schulz schrieb:
> >
> >Man *darf* nicht. Bsp:
> >
> >def make_foo(bar):
> >    if bar < 99:
> >        print '%s is small' % bar
> >    else:
> >        i = 100
> >        while i < bar:
> >            print '%s is larger than %s' % (bar, i)
> >            i += 100
> >    pass
> >
> vielleicht bin ich zu müde, jedenfalls stehe ich auf dem Schlauch. Mir 
> fällt an deinem Programm auf, dass falls bar 99 oder 100 beträgt, nichts 
> ausgegeben wird.

Yup, off-by-one.

> Ansonsten sind nach meinen bescheidenen Kenntnissen die 
> Aussagen
> 255 > 100 und
> 255 > 200
> doch korrekt.
> Was ist daran Unsinn?

Unsinn ist, daß die Funktion nichts Sinnvollesn tut. Ich hab nur grad
irgendeinen lauffähigen Quatsch hingeschrieben, um die Syntax zu zeigen.

> Was hat das denn mit Klammern zu tun? (kenne python 
> ebenfalls nicht)

In Java (C ähnlich) macht man doch

if foo {
    bar;
} else {
    baz;
}

Analog für Schleifen. Die Einrückung ist hier optional, dh der Compiler
besteht nicht darauf. In Python macht man stattdessen:

if foo:
    bar
else:
    baz

Da eine ordentliche Einrückung sowieso für jeden Programmierer Pflicht
sein sollte, wurde sie gleich zum Syntaxelement gemacht und die dann
redundanten Klammern weggelassen. Außerdem fallen die Semikola weg - das
Zeilenende ist das Ende einer Anweisung, wenn die Zeile nicht mit einem
'\' endet.

J.
-- 
I no longer believe my life will be long, happy, interesting or fulfilled
[Agree]   [Disagree]
                 <http://www.slowlydownward.com/NODATA/data_enter2.html>

Attachment: signature.asc
Description: Digital signature


Reply to: