Wie behebe ich das Python Problem?

4 Antworten

Also dein Fehler liegt daran, dass print ist nur bei dem if "/" eingerückt und wird demnach auch nur wenn man mit Division rechnet ausgegeben .

Außerdem kann man sich Ergebnis = 0 sparen, da es nacher eh wieder überschrieben wird und man bei Python keine Variablen deklarieren muss.

Und ich würde dir auch raten mit elif (else if) zu arbeiteten, da dort alle anderen Abfragen übersprungen werden, wenn 1. Aussage Wahr ist

zahl1=int(input("1. Zahl: "))
zahl2=int(input("2. Zahl: "))
rechenzeichen =input("Addieren? (+), Subtrahieren (-), Multiplizieren? (*), Dividieren (/): ")

if rechenzeichen=="+":
    ergebnis=zahl1+zahl2

elif rechenzeichen=="-":
    ergebnis=zahl1-zahl2

elif rechenzeichen=="*":
    ergebnis=zahl1*zahl2

elif rechenzeichen=="/":
    ergebnis=zahl1/zahl2

print("Das Ergebnis ist:", ergebnis)

(außerdem würde ich auch alles einheitlich klein schreiben.)

Ich hoffe ich konnte dir helfen

LG

Woher ich das weiß:eigene Erfahrung

Hanibal545  13.09.2022, 12:06

Außerdem hättest du auch den Aufruf "eval(value)" (und ein F-String) verwenden können, um das Programm zu verkürzen/effektiver zu machen 😉

gleichung = input("Geben sie die Gleichung ein: ")

ergebnis = eval(gleichung)

print(f'Das Ergebnis von "{gleichung}" ist: {ergebnis}')
Marcel6107 
Beitragsersteller
 13.09.2022, 15:19
@Hanibal545

Kannst du mir da auch helfen. Ich möchte dass das Programm neustartet wenn man am Ende Ja eingibt oder wenn man Nein eingibt dass sich das Programm beendet

Hanibal545  13.09.2022, 15:27
@Marcel6107

Ich kann dir natürlich helfen

Du könntest eine While-Schleife machen und dann könntest du z.B. eine Abfrage machen (das abgefragte kleinschreiben) und dann schauen, ob j oder n eingegeben wurde.

Also:

while True:
    zahl1=int(input("1. Zahl: "))
    zahl2=int(input("2. Zahl: "))
    rechenzeichen =input("Addieren? (+), Subtrahieren (-), Multiplizieren? (*), Dividieren (/): ")

    if rechenzeichen=="+":
        ergebnis=zahl1+zahl2

    elif rechenzeichen=="-":
        ergebnis=zahl1-zahl2

    elif rechenzeichen=="*":
        ergebnis=zahl1*zahl2

    elif rechenzeichen=="/":
        ergebnis=zahl1/zahl2

    print("Das Ergebnis ist:", ergebnis)
    eingabe = input("Möchtest du eine weitere Rechnung machen? (y/n)").lower()
    if eingabe == "n":
        print("Bis bald")
        break

Oder:

while True:
    gleichung = input("Geben sie die Gleichung ein: ")
    ergebnis = eval(gleichung)
    print(f'Das Ergebnis von "{gleichung}" ist: {ergebnis}')
    eingabe = input("Möchtest du eine weitere Rechnung machen? (y/n)").lower()
    if eingabe == "n":
        print("Bis bald")
        break

Ich hoffe ich konnte dir helfen und wenn du weitere Fragen hast kannst du sie mir natürlich auch fragen 😃

LG

Marcel6107 
Beitragsersteller
 15.09.2022, 15:25
@Hanibal545

Danke du bist der beste :)
Nun ich habe mit Python einen Taschenrechner mit grafischer Oberfläche programmiert:

Ich möchte das der Taschenrechner das Ergebnis in einem Feld anzeigt und das ganze plus rechnet. Ich komme nicht weiter

from tkinter import *

global zahl1

zahl1=5

global zahl2

def button_click():

   print(zahl1)

# creating a window

root = Tk()

root.title("Test Fenster")

root.geometry("400x300")

#Eingaben

Label(root, text="zahl1").grid(row=0)

Label(root, text="zahl2").grid(row=1)

e1 = Entry(root)

e2 = Entry(root)

e1.grid(row=0, column=1)

e2.grid(row=1, column=1)

#Berechnen Buttom

button = Button(root, text="Berechnen", command=button_click)

button.place(x=100, y=200)

root.mainloop()

Marcel6107 
Beitragsersteller
 15.09.2022, 15:27
@Hanibal545

from tkinter import *

global zahl1

zahl1=5

global zahl2

def button_click():

   print(zahl1)

# creating a window

root = Tk()

root.title("Test Fenster")

root.geometry("400x300")

#Eingaben

Label(root, text="zahl1").grid(row=0)

Label(root, text="zahl2").grid(row=1)

e1 = Entry(root)

e2 = Entry(root)

e1.grid(row=0, column=1)

e2.grid(row=1, column=1)

#Berechnen Buttom

button = Button(root, text="Berechnen", command=button_click)

button.place(x=100, y=200)

root.mainloop()

Hanibal545  15.09.2022, 16:26
@Marcel6107

Du kannst mit e1.get( ) den Wert von dem Entry herausfinden. Also wenn du einen Rechner baust, dann kannst du es z.B. so machen.

import tkinter as tk

def profit_calculator():
    ergebnis = int(e1.get()) + int(e2.get())
    print(f"Das Ergebnis von {e1.get()} + {e2.get()} ist {ergebnis}")

# creating a window
root = tk.Tk()
root.title("Test Fenster")
root.geometry("400x300")

#Eingaben
tk.Label(root, text="zahl1").grid(row=0)
tk.Label(root, text="zahl2").grid(row=1)

e1 = tk.Entry(root)
e2 = tk.Entry(root)

e1.grid(row=0, column=1)
e2.grid(row=1, column=1)

button = tk.Button(root, text="Calculate", command=profit_calculator)
button.place(x=100, y=200)    

root.mainloop()
Das Problem ist bei mir rechnet er nur dividiert wenn ich andere Rechenzeichen eingebe, dann beendet er das Programm.

Dein Problem ist die Einrückung, wenn der Code genau so wie hier eingerückt ist.

Das Print-Statement gehört durch die Einrückung nur zum If-Block bezüglich der Division ... Die Ausgabe kann also auch nur dort passieren, sonst nirgends

Woher ich das weiß:Studium / Ausbildung – Abgeschlossenes Studium der Informatik (B.Sc.)

Marcel6107 
Beitragsersteller
 13.09.2022, 15:20

Kannst du mir da auch helfen. Ich möchte dass das Programm neustartet wenn man am Ende Ja eingibt oder wenn man Nein eingibt dass sich das Programm beendet

xxxcyberxxx  13.09.2022, 15:24
@Marcel6107

Du setzt den Code in eine Schleife und durch die Schleifenbedingung überprüfst du eben, ob es neugestartet wird oder nicht

Marcel6107 
Beitragsersteller
 13.09.2022, 15:25
@xxxcyberxxx

Kannst du mir vielleicht den code umschreiben das wäre echt nett ich fang erst an mit dem programmieren

xxxcyberxxx  13.09.2022, 15:27
@Marcel6107
Kannst du mir vielleicht den code umschreiben das wäre echt nett ich fang erst an mit dem programmieren

Nein, denn ich kann das schon. Du jedoch willst es lernen, da finde ich es nicht sinnvoll, die Lösung direkt zu nennen.

Lies dich in Schleifen ein. Für dich hier z.B. "while"

Marcel6107 
Beitragsersteller
 13.09.2022, 10:41

Vielen Dank :)

Kein wunder wenn der "print("Das Ergebnis ist:", Ergebnis)" nur im if Satz von Dividieren befindet.

Deshalb habe ich die Code für dich das problem behoben.

Zahl1=int(input("1. Zahl: "))
Zahl2=int(input("2. Zahl: "))
Rechenzeichen =input("Addieren? (+), Subtrahieren (-), Multiplizieren? (*), Dividieren (/): ")

Ergebnis = 0
if Rechenzeichen=="+":
    Ergebnis=Zahl1+Zahl2

if Rechenzeichen=="-":
    Ergebnis=Zahl1-Zahl2

if Rechenzeichen=="*":
    Ergebnis=Zahl1*Zahl2

if Rechenzeichen=="/":
    Ergebnis=Zahl1/Zahl2

print("Das Ergebnis ist:", Ergebnis)
Woher ich das weiß:Hobby – Ich bin viel am PC, und kenn mich schon gut aus.

Marcel6107 
Beitragsersteller
 13.09.2022, 15:21

Kannst du mir da auch helfen. Ich möchte dass das Programm neustartet wenn man am Ende Ja eingibt oder wenn man Nein eingibt dass sich das Programm beendet

PrincPersia  13.09.2022, 15:49
@Marcel6107

Kein problem:

def Frage_nach_Beenden():
    Frage = input("Möchten sie das Programm Beenden? ")

    if Frage == "Nein" or Frage == "nein" or Frage == "NEIN":
        print("Ok Das Programm wird weiter benutzt")
        Start()
    elif Frage == "Ja" or Frage == "ja" or Frage == "JA":
        print("Ok. Das programm wird Beendet")
    else:
        print("Ich verstehe nicht was du geschrieben hast. Ich wiederhole es noch mal")
        Frage_nach_Beenden()

def Start():
    Zahl1=int(input("1. Zahl: "))
    Zahl2=int(input("2. Zahl: "))
    Rechenzeichen =input("Addieren? (+), Subtrahieren (-), Multiplizieren? (*), Dividieren (/): ")

    Ergebnis = 0
    if Rechenzeichen=="+":
        Ergebnis=Zahl1+Zahl2

    if Rechenzeichen=="-":
        Ergebnis=Zahl1-Zahl2

    if Rechenzeichen=="*":
        Ergebnis=Zahl1*Zahl2

    if Rechenzeichen=="/":
        Ergebnis=Zahl1/Zahl2

    print("Das Ergebnis ist:", Ergebnis)
    Frage_nach_Beenden()
Start()

Damit du künftig auch alleine schaffst, würde ich dir empfehlen mehr Grundlage Tutorial zu Python nach schauen.

Ich komme nicht von Python, aber klassisch gesehen würde man mit else-ifs arbeiten oder mit einer Mehrfachauswahl (switch / select case / ...)

Woher ich das weiß:Berufserfahrung – Programmierer

Suboptimierer  13.09.2022, 10:52

Kleiner Hinweis:

Bei der Eingabe von Zahl1 und Zahl2 lese ich etwas von int, was mir sagt, dort könnte eine Integer-Umwandlung stattfinden.

Falls dem so ist, würde ich lieber eine Gleitpunktzahl verwenden, denn schließlich willst du auch dividieren. Ich kann mir nicht vorstellen, dass du nur Ganzzahlen behandeln willst.