Dookie hat geschrieben:Hallo David und alle anderen Interessierten,
und jetzt wie ich das in Python mit allen Schikanen machen würde:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
num = [45, 7, 68, 2, 34]
int_signified = len(num)
integer_sum = sum(num)
average = float(integer_sum) / float(int_signified)
print "Anzahl an Integern = %i" % int_signified
num_names = ["Eins", "Zwei", "Drei", "Vier", "Fuenf", "Sechs", "Sieben", "Acht"]
for name, value in zip(num_names, num):
print "Zahl %s = %i" % (name, value)
print 'Summe =', integer_sum
print 'Der Durchschnitt = %0.2f' % average
Gruß
Dookie
Also dazu möchte ich noch folgende Beispiele in anderen Programmiersprachen liefern (Java habe ich mal ausgelassen, da die konkrete Umsetzung des Problems eher gewöhnlich aussieht und keine speziellen Features der Sprache benötigt:
Ruby (eine sehr schöne Sprache meiner Meinung nach; leider keine Multiple Vererbung aber dafür Operator-Overloading; gibts das eigentlich in der Zwischenzeit auch in Python?) Wie man sieht ist sum nicht da, als habe ich es programmiert:
Code: Alles auswählen
#!/usr/bin/ruby1.8
a=45, 7, 68, 2, 34
b= "Eins", "Zwei", "Drei", "Vier", "Fuenf", "Sechs", "Sieben", "Acht"
class << a; def sum; r=0; each { |i| r+=i}; r; end; end
print "Anzahl ", a.length, "\n"
print "Summe ", a.sum, "\n"
print "Durchschnitt ", a.sum.to_f / a.length, "\n"
a.zip( b).each { |i, j| print "Zahl: ", i, " Name: ", j, "\n"}
Dann in der Sprache icon; eine Sprache, die viele Features aus Prolog mitbringt (implizites Backtracking, Goal-Orientierte Programmabarbeitung) aber immer noch eine C-Ähnliche Notation hat und recht gut lesbar ist, auch hier musste sum programmiert werden (rekursiv, geht aber auch iterativ), leider muß icon erst compiliert werden aber das ist eigentlich nicht weiter schlimm, wir sind nur schon viel zu versaut durch bash perl python ruby tcc ... :-):
Code: Alles auswählen
procedure sum( l)
suspend l[1 ]+ sum( l[2:0]) | suspend 0;
end
procedure main()
l1:= [ 45, 7, 68, 2, 34]
l2:= [ "Eins", "Zwei", "Drei", "Vier", "Fuenf", "Sechs", "Sieben", "Acht"]
write( "Anzahl: ", *l1);
write( "Summe ", sum( l1));
write( "Durchschnitt ", ( 0.0+ sum( l1))/ ( *l1))
ll1:= create( !l1);
ll2:= create( !l2);
while write( "Zahl: ", @ll1, " Name: ", @ll2)
end
Und zuletzt noch in Swi-Prolog, weil Prolog sehr schön mit Listen umgehen kann und man da einen faibel für rekursives Programmieren/Denken bekommt (teils, weil es auch nicht anders geht :-) ):
Code: Alles auswählen
#!/usr/bin/swipl -q -t main -s
numbers( [45, 7, 68, 2, 34]).
names( [ 'Eins', 'Zwei', 'Drei', 'Vier', 'Fuenf', 'Sechs', 'Sieben', 'Acht']).
len( [], 0).
len( L, LEN):- [_|T]= L, len( T, LEN_DOWN), LEN is LEN_DOWN+ 1.
sum( [], 0).
sum( L, SUM):- [H|T]= L, sum( T, SUM_DOWN), SUM is SUM_DOWN+ H.
mywrite( []).
mywrite( L):- [H|T]= L, write( H), mywrite( T).
mymap( _, [], _, [], _, []).
mymap( _, [], _, _, _, []).
mymap( _, _, _, [], _, []).
mymap( S1, L1, S2, L2, S3, LRES):- [H1|T1]=L1, [H2|T2]=L2, mymap( S1, T1, S2, T2, S3, TRES), LRES=[S1,H1,S2,H2,S3|TRES].
main:- numbers( LN), len( LN, LEN), mywrite( [ 'Anzahl ', LEN, '\n']), sum( LN, SUM),
mywrite( [ 'Summe ', SUM, '\n']), AVG is SUM/LEN, mywrite( [ 'Durchschnitt ', AVG, '\n']),
names( LNA), mymap( 'Zahl ', LN, ' Wert ', LNA, '\n', LIST), mywrite( LIST).
Jetzt wäre noch Ada und Lisp interessant, also, wer Lust hat, kann hier noch etwas dazu beitragen.
weedy.