Formatierung Exponentialschreibweise

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
Dieter68
User
Beiträge: 5
Registriert: Dienstag 7. Juli 2020, 18:33

# Eingabe einer Wellenlänge als Zahl, die allerdings intern zum Rechnen mit 1e-9 umgewandelt wird.
# Der Schüler soll nur z.B. 560 (grünes Licht) eingeben.
# Zur Kontrolle soll die Eingabe nochmals in Exponentialschreibweise angezeigt werden.
# 1000 Formatierungen im Internet, aber keine zeigt das Ergebnis als 560e-9 (nm)an.
#
# Gibt es da eine Lösung?
# Vielen Danke!

Code: Alles auswählen

number_L = int(input("Bitte geben Sie eine Wellenlänge L  zwischen(400 - 800)nm ein:  "))   
print("L als Eingabe:", number_L)
print("L in Exponentialschreibweise dargestellt:", number_L*1e-9)
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dieter68
User
Beiträge: 5
Registriert: Dienstag 7. Juli 2020, 18:33

Danke für den Link, aber dort wird mein Problem nicht behandelt. Ich brauche ja drei
Dezimalstellen vor dem Komma (Punkt) und dann erst die e-Schreibweise.
Hat jemand eine Lösung wenn möglich mit Beispielcode.
Danke an alle.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Die Antwort war auch nicht gedacht dazu, eine perfekte Lösung zu liefern. Sondern das Thema String Formatierung ins Bewusstsein sein zu bringen. Das auch ausführlich in der Python Dokumentation beschrieben ist. Hast du da mal etwas versucht mit zu arbeiten?
Dieter68
User
Beiträge: 5
Registriert: Dienstag 7. Juli 2020, 18:33

Ehrlich, nein. Aber ich lese doch integer ein und keinen Text. Oder verstehe ich das nicht? Alle Formatierungen geben nur ein Stelle vor dem Komma aus. Ich möchte aber drei Stellen vor dem Komma (560e-9). Danke das du über mein Problem nachdenkst. Wer hat noch Vorschläge?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du liest zwar eine Ganzzahl, multiplizierst die aber mit einem Fliesskommazahl. Womit du auch eine fliesskommazahl erhältst & darstellen willst. Und dazu musst du sie nach definierten Vorgaben in einen String umwandeln. Denn nur das kann man ausgeben. Darum heißt das Thema Stringformatierung. Und ist ganz wirklich und in echt die Antwort auf deine Frage.
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Wenn Du unbedingt ein e-9 fix haben willst, mußt Du das halt selbst rechnen:

Code: Alles auswählen

f"{zahl*1e9:.2f}e-9"
Obwohl ich persönlich ein `nm` deutlich lesbarer finde als ein `e-9m`
Antworten