Frage zum Python-Tutorial

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
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

http://tutorial.pocoo.org/introduction.html

Bei dem Punkt 3.1.1:

"Die Konvertierungsfunktionen in Fließkommazahlen und Ganzzahlen (float(), int()) stehen für komplexe Zahlen nicht zur Verfügung. Man kann abs(z) verwenden, um den Betrag einer komplexen Zahl (als Fließkommazahl) zu berechnen, oder z.real, um den Realteil zu erhalten:"

Code: Alles auswählen

a = 3.0 + 4.0j
>>> float(a)
Traceback (most recent call last):
 File "<stdin>", line 1, in ?
TypeError: can't convert complex to float; use abs(z)
>>> a.real
3.0
>>> a.imag
4.0
>>> abs(a)  # sqrt(a.real**2 + a.imag**2)
5.0
>>>
Da steht doch, dass man die Konvertierungsfunktion bei komplexen Zahlen nicht benutzten kann. Aber wenn wann abs(z) schreibt, geht das anscheinend, oder habe ich da was falsch verstanden? Und was bedeutet das abs(z)?

Und was ist der Realteil un der Imaginärteil, wie vor wenigen Zeilen beschrieben?
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Dazu solltest du komplexe Zahlen verstehen.

Edit: abs steht für den Betrag: http://de.wikipedia.org/wiki/Komplexe_Z ... lexen_Zahl
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

So neues Problem:

"Im interaktiven Modus wird der zuletzt ausgegebene Ausdruck der Variablen _ zugewiesen. Die ist besonders hilfreich, wenn man den Python-Interpreter als Taschenrechner einsetzt"

Code: Alles auswählen

tax = 12.5 / 100
>>> price = 100.50
>>> price * tax
12.5625
>>> price + _
113.0625
>>> round(_, 2)
113.06
>>>
Was bedeutet dieses Zeichen "_" überhaupt? Und was ist round, und warum kommt 113.0625 raus, wenn man price mit "_" addiert?
Weil normalerweise ist doch "_" gar nicht definiert. Das wird auch im SPE angezeigt, nur nicht im Python-Shell. Und was ist ein "Ausruck"? Das wäre doch in dem Fall dann price, dem wurde ja die Zahl 100.50 zugewiesen, oder handelt es sich doch um price * tax? Ich blick da gar nicht mehr durch... :K
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

Natürlich kann man eine komplexe Zahl in einen Integer bzw Float umwandeln. Nur halt nicht mit der (sonst gebräuchlichen Funktionen) int bzw. float Funktion.

Code: Alles auswählen

>>> x = 3 + 4j
>>> x
(3+4j)
>>> int(x)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't convert complex to int; use int(abs(z))
>>> float(x)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't convert complex to float; use abs(z)
>>> abs(x)
5.0
>>> int(abs(x))
5
EDIT: was in 5min alles so passiert...
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

Hm, trotzdem habe ich das noch nicht ganz kapiert. Was bedeutet das abs jetzt?

@ jbs:

Das soll ich jetzt als 13-jähriger verstehen?
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Du hast gefragt.
Überspring sonst einfach den Teil mit den komplexen Zahlen.

Wie schon im Tutorial steht. _ beinhaltet den letzen zurückgegebenen Wert.

Code: Alles auswählen

>>> 2*2
4
>>> print _
4
>>>
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Ich denke selbst als 13-jähriger dürftest du darauf kommen, dass round runden beteuten könnte. Und das hatte ich in der Grundschule. Zur Not: in der Doku nachschauen.

Ausdruck ist in diesem Fall etwa der vornehme Ausdruck für Ding, welches eben zurückgegeben wurde.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

Als 13-jähriger musst du dich auch nicht mit komplexen Zahlen auseinandersetzten.

round(x, 2) rundet die Zahl x auf die letzten 2 Stellen.

_ ist ein Unterstrich und als solcher ein ganz normales Zeichen. Im interaktiven Modus wird das letze Ergebnis einfach an diesen Namen gebunden. Es hätte genauso gut x sein können. Man hat sich halt aus praktischen Gründen für _ entschieden.
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

HerrHagen hat geschrieben:Natürlich kann man eine komplexe Zahl in einen Integer bzw Float umwandeln. Nur halt nicht mit der (sonst gebräuchlichen Funktionen) int bzw. float Funktion.
Ich finde die Aussage etwas verwirrend. Wenn Du abs anwendest, bildest Du ja lediglich den Betrag. Mit umwandeln hat das wenig zu tun. Zur vollständigen Umwandlung müsstest Du ja noch den Winkel bestimmen.
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

Achso ok.

"Wenn wir den Zeichenkettenliteral zu einem “raw”-String machen, wird \n nicht in einen Zeilenumbruch umgewandelt; auch der Backslash am Ende und das Zeilenumbruch-Zeichen im Quellcode sind Teil der Zeichenkette. Das Beispiel:"

Code: Alles auswählen

hello = r"Dies ist eine ziemlich lange Zeichenkette,\n\
die mehrere Zeilen Text enthält und wie man sie auch in C schreiben würde."

print(hello)

Das wird auch im Tutorial beschrieben, bei mir kommt dann aber die Fehlermeldung:

SyntaxError: Non-ASCII character '\xe4' on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Benutzeravatar
Weltbesiedler
User
Beiträge: 103
Registriert: Dienstag 2. Februar 2010, 18:44
Wohnort: Bayern

Code: Alles auswählen

'str' 'ing'             #Das ist ok
'string'
>>> 'str'.strip() + 'ing'   #Das ist ok
'string'
>>> 'str'.strip() 'ing'     #Das ist ungültig
 File "<stdin>", line 1, in ?
   'str'.strip() 'ing'
                     ^
SyntaxError: invalid syntax
Hier wird z.B. etwas gezeigt, das noch gar nicht erklärt wurde:

was ist das .strip() ?

Edit:

"Zeichenketten können indiziert werden, wobei das erste Zeichen einer Zeichenkette wie in C den Index 0 hat (“nullbasierte Zählung”). Es gibt keinen speziellen Zeichentyp (wie char in C) — ein Zeichen ist einfach eine Zeichenkette der Länge eins. Wie in der Programmiersprache Icon können Teile einer Zeichenkette mittels Slice-Notation (Ausschnittschreibweise) festgelegt werden. Angegeben werden zwei Indizes getrennt durch einen Doppelpunkt (:)."

Code: Alles auswählen

>>> word[4]
'A'
>>> word[0:2]
'He'
>>> word[2:4]
'lp'
Was sind Indizes?

In dem Fall ist

Code: Alles auswählen

word = 'Help' + 'A'
Schreibt er dann immer im ersten Fall mit

Code: Alles auswählen

word [4]
den vierten Buchstaben?
Und bei

Code: Alles auswählen

word[0:2]
den nullten (ersten) und den zweiten?

Edit: Und warum kommt bei

Code: Alles auswählen

word [1:2:4]
>>> 'e'

raus?

Und nicht der erste (zweite?), dritte und vierte (fünfter) Buchstabe raus?
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Weltbesiedler hat geschrieben:was ist das .strip() ?

Code: Alles auswählen

>>> help(str.strip)
Was sind Indizes?
Die Mehrzahl von Index. Was ein Index ist, findest du selbst raus. Z.B. durch ausprobieren in der Python-Shell.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Weltbesiedler hat geschrieben:SyntaxError: Non-ASCII character '\xe4' on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Das ist fuer Python 3 geschrieben, der Unterschied zwischen Python 2 und 3 ist u.a., dass in Python3 UTF-8 als Standardkodierung benutzt wird - aber das fuehrt zu weit.
Weltbesiedler hat geschrieben:Hier wird z.B. etwas gezeigt, das noch gar nicht erklärt wurde:
Das Kapitel ist ein erster Durchgang, um zu zeigen, was denn alles so geht. Dabei hat der Abschnitt nur eine Funktion: Zu zeigen dass Literale und Ausdruecke sich nicht gleich verhalten (muessen).

Tu dir einen Gefallen und verwende ein Woerterbuch fuer Begriffe, die du nicht kennst. Index ist in dem Fall aequivalent zu Position.

'A' ist _nicht_ der 4. Buchstabe.
Antworten