Hilfe für while Schleife im Taschenrechner

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
Heisenber12g
User
Beiträge: 7
Registriert: Sonntag 13. Januar 2019, 16:13

Hallo,

ich habe im Internet einen Taschrenrechercode gefunden den ich recht unübersichtlich und zu kompliziert fand und hab ihn vereinfacht. Was mir allerdings noch fehlt ist das der Taschrenrecher neu startet was aber nicht sehr gut funktioniert seht selbst :

Code: Alles auswählen

  
  

        
        print("""-----------------------------------------------
        ---------------Taschenrechner------------------
        -----------------------------------------------""")
while True
       
        num1 = input("Gib die erste Zahl ein : ")
        op = input("Welche Rechenoperation (/,*,-,+,) möchtest du ausführen ? ")
        num2 = input("Gib die zweite Zahl ein : ")

        num1 = int(num1)
        num2 = int(num2)

        if op == "/" : 
                print("deine Rechnung", num1, "/", num2, "=")
                print("Ergebnis", num1 / num2)

        if op == "*" :
                print("deine Rechnung", num1, "/", num2, "=")
                print("Ergebnis", num1 * num2)

        if op == "-" :
                print("deine Rechnung", num1, "-", num2, "=" )
                print("Ergebnis", num1 - num2)

        if op == "+" :
                print("deine Rechnung", num1, "+", num2, "=")
                print("Ergebnis", num1 + num2)

        else:
        print("Keine gültige Eingabe");
        
        input("möchtest du weiterrechnen j/n ? ")
        if input = j 
                j = True
        if input = n
                break

  
ich möchte gern das der code auf num1 springt , wo liegt der fehler ?. mfg
onur22
User
Beiträge: 19
Registriert: Freitag 28. Dezember 2018, 21:25

Deine Code kann so nicht funktionieren.
Hinter while True kommt ein Colon. Deine letzten zwei If Statements funktionieren nicht, da dein input einen String ausgibt und keine Variable. Also musst du statt j, "j" schreiben. Außerdem macht es wenig Sinn zwei IF Statements hintereinander zu nutzen. Du kannst einfach if, else nutzen und musst gar nicht erst überprüfen, ob eben bspw. ein "n" eingeben wurde(vergleiche else, if, elif). Außerdem setzt du unten input = j, es muss aber input == "j" heißen. So funktioniert ein Vergleich. Danach dann noch ein Colon. Insert nicht vergessen

Ich würde dir empfehlen, dass du mal ein Basic Tutorial von Python durchgehst, damit du die Grundlagen kannst. Es bringt nichts, bei einem so einfachen Code nach Hilfe zu fragen. Da ist der Lernerfolg kein Großer. Schreib mir eine PN kann dir gerne beim Einstieg helfen
alles ist als Einsteiger möglich. Es ist nur die Frage, wie lange es dauert, bis man die nötigen Vorkenntnisse erworben hat.
Sirius3
User
Beiträge: 17731
Registriert: Sonntag 21. Oktober 2012, 17:20

@Heisenber12g: was heißt `nicht sehr gut`? Entweder funktioniert etwas, oder es funktioniert nicht, und wenn nicht, was ist dann der Fehler?

Zum Code: Einrückungen sind kaputt und : fehlen. Eingerückt wird immer mit 4 Leerzeichen pro Ebene, nicht 8. `input` ist eine Funktion. Wenn man mit dem Rückgabewert von `input` weiterarbeiten will, muß man ihn einer Variable zuweisen, wie weiter oben auch schon gemacht.
Variablen sind keine Strings und `j` wird nirgends gebraucht. Eigentlich mußt Du nur die Eingabe auf "n" prüfen und dann abbrechen.
Heisenber12g
User
Beiträge: 7
Registriert: Sonntag 13. Januar 2019, 16:13

onur22 hat geschrieben: Montag 21. Januar 2019, 16:53

Ich würde dir empfehlen, dass du mal ein Basic Tutorial von Python durchgehst, damit du die Grundlagen kannst. Es bringt nichts, bei einem so einfachen Code nach Hilfe zu fragen. Da ist der Lernerfolg kein Großer. Schreib mir eine PN kann dir gerne beim Einstieg helfen
Hast recht :).

muss nochmal genau googeln wie ich die while Schleife mit einer Input eingabe Neustarte und ggf. mein Englisch verbessern das ich nicht nur auf die deutschen Seiten angewiesen bin.
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

Heisenber12g hat geschrieben: Dienstag 22. Januar 2019, 17:00 muss nochmal genau googeln wie ich die while Schleife mit einer Input eingabe Neustarte [...]
Gar nicht? Eine while True-Schleife läuft von Haus aus ewig. Das machst du dir zu Nutze und vereinfachst deine Abfrage an den Benutzer, ob er weiter rechnen möchte. Falls seine Eingabe "n" lautet, kannst du das Abbruchschlüsselwort `break` benutzen, dann wird die Endlosschleife verlassen und alle können glücklich nach Hause gehen. Andernfalls kann er sich noch ein paar Extrarunden geben. Willst du das mit "j" oder "n" abfragen, bräuchtest du ganz genau betrachtet eine weitere while-Schleife. Benutzer können nämlich auch Schrott eingeben die dein Programm dann nicht kennt. z.B. "x", oder "3".

Für den Anfang ist dir aber wohl tatsächlich mit einem Grundlagen-Tutorial geholfen.
When we say computer, we mean the electronic computer.
Heisenber12g
User
Beiträge: 7
Registriert: Sonntag 13. Januar 2019, 16:13

Hallo Leute,

ich hab mir auf euren Rat hin ein Anfägerbuch gekauft ( von Michael Bonacina)

Code: Alles auswählen

 while True:
        
        print("""--------------------------------------------
        ---------------Taschenrechner---------------
        --------------------------------------------""")


        num1 = input("gib die erste Zahl ein : ")
        op = input("Welche Rechenoperation (+,/,*,-) möchtest du ausführen ? ")
        num2 = input("gib die zweite Zahl ein : ")

        num1 = int(num1)
        num2 = int(num2)

        if op == "+" : 
                print("deine Rechnung", num1, "+", num2,"=" )
                print("dein Ergebnis :", num1 + num2)


        if op == "-" :
                print("deine Rechnung", num1, "-", num2, "=")
                print("deine Ergebnis:", num1 - num2)

        if op == "/" :
                print("deine Rechnung", num1, "/", num2, "=")
                print("deine Ergebnis :", num1 / num2)

        if op == "*" :
                print("deine Rechung", num1, "*", num2, "=")
                print("dein Ergebnis :", num1 * num2)
        
        weiter = input("Möchten Sie fortfahren (j/n)")
        if weiter!= "j":
                break
        
und hab es hinbekommen . Einrücken mache ich per Tab Taste deswegen hab ich mehr als die vier Leerstellen
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Heisenber12g hat geschrieben: Samstag 2. Februar 2019, 11:47 Einrücken mache ich per Tab Taste deswegen hab ich mehr als die vier Leerstellen
Welchen Editor benutzt du denn?
1) musst du einstellen, dass anstelle von Tabs Leerzeichen verwendet werden und
2) musst du einstellen, dass 4 Leerzeichen verwendet werden.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Heisenber12g
User
Beiträge: 7
Registriert: Sonntag 13. Januar 2019, 16:13

ThomasL hat geschrieben: Samstag 2. Februar 2019, 12:11
Heisenber12g hat geschrieben: Samstag 2. Februar 2019, 11:47 Einrücken mache ich per Tab Taste deswegen hab ich mehr als die vier Leerstellen
Welchen Editor benutzt du denn?
1) musst du einstellen, dass anstelle von Tabs Leerzeichen verwendet werden und
2) musst du einstellen, dass 4 Leerzeichen verwendet werden.
Visual Studio Code
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Dann füge mal der settings.json diese Zeilen hinzu:

Code: Alles auswählen

"[python]": {
  "editor.insertSpaces": true,
  "editor.tabSize": 4  
}
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

In VS Code unter File > Preferences > Settings auswählen
rechts im Eingabefeld "Search Settings" indent eintippen
darunter in der Spalte "Benutzereinstellungen" das Feld "Commenly Used" anwählen
und schon hast du rechts genau die beiden Einstellmöglichkeiten die du benötigst.
Bei Editor: Insert Spaces ein Häkchen reinmachen
und bei Editor:Tab Size eine 4 einfügen
Fertig.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Heisenber12g
User
Beiträge: 7
Registriert: Sonntag 13. Januar 2019, 16:13

ThomasL hat geschrieben: Samstag 2. Februar 2019, 15:58 In VS Code unter File > Preferences > Settings auswählen
rechts im Eingabefeld "Search Settings" indent eintippen
darunter in der Spalte "Benutzereinstellungen" das Feld "Commenly Used" anwählen
und schon hast du rechts genau die beiden Einstellmöglichkeiten die du benötigst.
Bei Editor: Insert Spaces ein Häkchen reinmachen
und bei Editor:Tab Size eine 4 einfügen
Fertig.

Ok hab ich gemacht thx
Heisenber12g
User
Beiträge: 7
Registriert: Sonntag 13. Januar 2019, 16:13

Hallo,

wie muss ich diesen Code

Code: Alles auswählen

 
summe = 0

for feld in range(64):
    reiskörner = 2**feld
    summe += reiskörner
    print(f"Feld {feld+1}. = {reiskörner:>27,} Reiskörner und damit insgesamt"
          f"{summe:>28,} Reiskörner")


gewicht = summe * 0.02 / 1000 / 1000
print()
print("Wenn ein Reiskorn 0,02 Gramm wiegt, wiegen die gesamten"
      f" Reiskörner {gewicht:,.0f} Tonnen")
einrücken das sich die while Schleife wiederholt ?.

so funktioniert es schon mal nicht

Code: Alles auswählen


while True:

summe = 0

for feld in range(64):
	reiskörner = 2**feld
	summe += reiskörner
	print(f"Feld {feld+1}. = {reiskörner:>27,} Reiskörner und damit insgesamt"
			f"{summe:>28,} Reiskörner")


gewicht = summe * 0.02 / 1000 / 1000
print()
print("Wenn ein Reiskorn 0,02 Gramm wiegt, wiegen die gesamten"
		f" Reiskörner {gewicht:,.0f} Tonnen")

weiter = input("möchten Sie weitermachen ? (ja/nein) ")
if weiter != "ja":
    break 
Das while True ist nur im Forum eingerückt bei mir in VSC ist es linkbündig.
Sirius3
User
Beiträge: 17731
Registriert: Sonntag 21. Oktober 2012, 17:20

Alles was in der while-Schleife wiederholt werden soll, muß eingerückt werden.
Antworten