hallo zusammen.
ich bin unter anderem gelernter kameramann und habe vor ein paar tagen angefangen mich in python einzulesen.
heute hatte ich eine coole idee für eine praktische verwendung meines bisherigen wissens.
ich habe für kamera- und filminteressierte einen normalbrennweitenkalkulator geschrieben. der anhand der höhe und breite eines kamerasensors die dazu entsprenchende "normalbrennweite" errechnet.
der sieht so aus:
while True:
y = input("Höhe in mm: ")
x = input("Breite in mm: ")
z = (y*y) + (x*x)
print "Normalbrennweite = ", z**0.5, "mm"
das funktioniert ausgezeichnet aber ich hatte vor das ganze zu erweitern.
da vielen die größe des sensors (in mm) oft nicht bekannt ist, sehr wohl aber der name des formats wollte ich das ganze so stricken dass man einfach den namen des formats eingaben kann und direkt die entsprechende "normalbrennweite" geprintet bekommt.
ein beispiel:
die größe des kleinbildformates beträgt 24mm höhe, 36mm breite (y=24mm, x=36mm)
ich dachte mir das jetzt ungefähr so:
while True:
input("Format: ")
kleinbild = (y = 24), (x = 36)
z = (y*y) + (x*x)
print "Normalbrennweite = ", z**0.5, "mm"
mir ist klar dass das ein peinliches anfänger denken ist. dennoch würde ich gerne wissen ob und wie man eine variable (kleinbild) für zwei werte (y,x) stehen lassen kann.
1 variable für 2 werte
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Willkommen im Forum!
Ja, das geht. Stichwort Tupel (und Listen, ...) alternativ Klassen.
Mit dem Tupel ist der Ausschnitt dann:
P.S. Bitte nutze in Zukunft Code-/Python-Tags
Ja, das geht. Stichwort Tupel (und Listen, ...) alternativ Klassen.
Mit dem Tupel ist der Ausschnitt dann:
Code: Alles auswählen
...
y = input("Höhe in mm: ")
x = input("Breite in mm: ")
lens = (x, y)
...
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Meinst du sowas (ungetestet)?
Code: Alles auswählen
dimensions = {"kleinbild": (24, 36), "aps": (17, 30)}
format_name = raw_input("Format: ")
x, y = dimensions[format_name]
z = x * x + y * y
print "Normalbrennweite = %0.3f mm" % z ** 0.5
@cornyclown
Im Gegensatz zu meinem Vorredner halte ich Tupel und Listen nicht fuer geeignet - das, was du suchst, ist ein "dictionary". Damit bildet man Schluessel (uA strings, wie in deinem Fall) auf Werte ab:
Im Gegensatz zu meinem Vorredner halte ich Tupel und Listen nicht fuer geeignet - das, was du suchst, ist ein "dictionary". Damit bildet man Schluessel (uA strings, wie in deinem Fall) auf Werte ab:
Code: Alles auswählen
FORMATE = dict(
kleinbild=(36.0, 24.0)
)
while True:
x = raw_input("Format (%s) oder Breite:" % (", ".join(FORMATE.keys())))
if x in FORMATE:
x, y = FORMATE[x]
else:
x = float(x)
y = float(raw_input("Hoehe:"))
print x, y
ja, super! genau so hab ich mir das vorgestellt.bords0 hat geschrieben:Meinst du sowas (ungetestet)?Code: Alles auswählen
dimensions = {"kleinbild": (24, 36), "aps": (17, 30)} format_name = raw_input("Format: ") x, y = dimensions[format_name] z = x * x + y * y print "Normalbrennweite = %0.3f mm" % z ** 0.5
danke
sorry, wusste ich nich. ich werde dran denkencofi hat geschrieben:
P.S. Bitte nutze in Zukunft Code-/Python-Tags
das versteh ich noch nich ganz. ich muss nur lens= (x,y) hinschreiben?cofi hat geschrieben: Mit dem Tupel ist der Ausschnitt dann:
Code: Alles auswählen
... y = input("Höhe in mm: ") x = input("Breite in mm: ") lens = (x, y) ...
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Wichtig ist der rechte Teil: Du konstruierst ein Tupel, indem du die Werte durch Kommata getrennt in Klammern schreibst.kornyclown hat geschrieben:das versteh ich noch nich ganz. ich muss nur lens= (x,y) hinschreiben?
Das Auspacken hat bords0 schon demonstriert, daneben gibt es noch den Zugriff per Index, also
Code: Alles auswählen
x = lens[0]
y = lens[1]
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Code: Alles auswählen
frage = kann man in einer variablen zwei werte haben?
antwort1 = cofi
antwort2 = bords0
summe = antwort1 + antwort2
hilfsreich = ja
if summe > hilfsreich:
print "Geil"