Hilfe: Klassenarbeit und habe keine Ahnung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
baddy
User
Beiträge: 1
Registriert: Mittwoch 3. Juni 2009, 07:37

Erst mal Guten Tag liebe Forummember^^,
ich schreibe am Donnerstag eine Informatikarbeit zum Thema Python und ich habe null Ahnung davon, was er vorhat in der Arbeit schreiben zu lassen.
Deswegen möchte ich euch fragen ob ihr nicht so nett wärt, mir gewisse Codes genau zu erklären [da es mein Lehrer nicht tat und sowas von uns verlangt -_-].

Ich weiß hier zum Beispiel nicht, wie die ganze "for i" funktion abläuft:

Code: Alles auswählen

wort="informatik"
anz=len(wort)
for i in range(anz):
    print i*' '+wort[i]
Hier wär es lieb wenn mir einer erklären könnte, was dieses "for i in range(anz)" und die zeile darunter mit "print i*' '+wort".
das resultat aus diesem Code ist:

Code: Alles auswählen

>>> 
i
 n
  f
   o
    r
     m
      a
       t
        i
         k
Desweiteren begreife ich nicht, was es mit der funktion "range" auf sich hat und wie es dem Code hilft das wort Informatik so zu schreiben.
---

der zweite Code beinhaltet ebenfalls eine range funktion und ich versteh bei dem ganzem code nur bahnhof:

Code: Alles auswählen

s=raw_input("Bitte String eingeben:")
i=0
for b in s:
    l=len(s)-i
    print s[:l]
    i+=1
Hier verstehe ich den ganzen code ab der "for schleife" nicht mehr.
Auch hier wünsche ich, dass mir jemand die erklären könnte.
Das resultat aus diesem code ist:

Code: Alles auswählen

>>> 
Bitte String eingeben:Informatik
Informatik
Informati
Informat
Informa
Inform
Infor
Info
Inf
In
I
--

der dritte und letzte code (vorerst) den ich nicht begreifen möchte ist dieser hier:

Code: Alles auswählen

x= 'INFORMATIK'
for y in range (0,10,2):
    
    print x [y],
auch hier versteh ich alles ab der "for schleife" nicht.
z.B. was hat das mit dem "[y]" nach dem "print x" zu tun und so weiter.
das Resultat aus dem code:

Code: Alles auswählen

>>> 
I F R A I
also wird der erste Buchstabe, dann der 3 usw. ausgeschrieben.
Und ich weiss wieder nicht wie range bei der Funktion beigetragen hat ...


Ihr seid meine letzte Hoffnung also bitte bitte bitte bitte tut mir den gefallen und erklärt mir die codes, ansonsten bekomm ich eine vier in diesem Fach ,_,! [/code]
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

Zunächst: for ist ein Schlüsselwort und keine Funktion.

Vielleicht hilft es dir, das ganze gedanklich in eine natürliche Sprache zu übersetzen:

Code: Alles auswählen

for element in elements:
    do_something_with(element)
"Für jedes 'element' in 'elements', tue etwas mit 'element'."

Man iteriert hier durch eine Sequenz, welche eine Liste, Tupel oder auch ein String/Zeichenkette sein kann.

Einzelne Elemente eine Sequenz kann man direkt mit dem Indexoperator [] ansprechen.

Bsp.:

Code: Alles auswählen

"Hallo Welt!"[4]
Diese elementaren Lücken jetzt allerdings bis morgen, im Verständnis, nacharbeiten zu wollen, halte ich jetzt nicht für möglich.
[da es mein Lehrer nicht tat und sowas von uns verlangt -_-]
... es gibt durchaus Gründe für diese Art der Stoffvermittlung.

Grüße... Heiko
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

Du kannst es dir bestimmt herleiten, wenn du den Code Stück für Stück auseinander nimmst. Das ist nicht so schwierig

range kannst du auch im Handbuch nachschlagen und sehen, was die Funktion macht (dito len).

Die erste for Schleife macht ja zwei Sachen, zum einen den Buchstaben ausgeben, zum anderen einen Abstand zum linken Rand.

Was macht denn?

Code: Alles auswählen

for buchstabe in 'informatik':
    print buchstabe

print 'informatik'[2:3]
Dazu sieh dir mal http://docs.python.org/tutorial/introdu ... ml#strings (3.1.2) an.
Letztendlich modifiziert jeder Code in den Beispielen die Zeichenkette auf eine bestimmte Art und Weise (Buchstabieren, Buchstaben "abziehen" (Rückwärtszählen), und Teilmengen ausgeben).

Schau dir das verlinkte Tutorial an. Da steht alles drin, was du brauchst, um zu verstehen, was da passiert ;)
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

na klar der lehrer hat nix erklärt :?

das schöne an python ist doch, dass es einen interpreter gibt, du die teile deines codes also sehr schön darin analysieren kannst.

dazu musst du natürlich erstmal den interpreter gestartet bekommen, kannst du das?

Code: Alles auswählen


In [2]: wort="informatik"

In [3]: wort
Out[3]: 'informatik'

In [4]: wort[0]
Out[4]: 'i'

In [5]: len
Out[5]: <built-in function len>

In [6]: help(len)
Help on built-in function len in module __builtin__:

len(...)
    len(object) -> integer

    Return the number of items of a sequence or mapping.


In [7]: anz = len(wort)

In [8]: anz
Out[8]: 10

In [9]: wort[anz]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)

<ipython console> in <module>()

IndexError: string index out of range

In [10]: #huch!?

In [11]: wort[anz-1]
Out[11]: 'k'

In [12]: #achso!

In [13]: wort[0], wort[1], wort[2], wort[9]
Out[13]: ('i', 'n', 'f', 'k')

In [14]: print ' '


In [15]: print ' ' + wort[0]
 i

In [16]: print '    ' + wort[0]
    i

In [17]: print "x"
x

In [18]: print 5 * "x"
xxxxx

In [20]: print 0 * ' ' + wort[0]
i

In [21]: print 1 * ' ' + wort[1]
 n

In [22]: print 2 * ' ' + wort[2]
  f

In [23]: print 5 * ' ' + wort[5]
     m

In [24]: print 9 * ' ' + wort[9]
         k

In [25]: range(anz)
Out[25]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In [26]: for i in range(anz):
   ....:     print i
   ....:
0
1
2
3
4
5
6
7
8
9


http://www.kinderpornos.info
Antworten