Wie behebe ich das Python Problem?
Hallo
Ich habe mir einen Taschenrechner mit Python programmiert. Wenn ich auf start klicke, muss ich die erste Zahl und die zweite Zahl eingeben. Danach das Rechenzeichen.
Das Problem ist bei mir rechnet er nur dividiert wenn ich andere Rechenzeichen eingebe, dann beendet er das Programm.
Code:
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)
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
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
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
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()
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()
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
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
Du setzt den Code in eine Schleife und durch die Schleifenbedingung überprüfst du eben, ob es neugestartet wird oder nicht
Kannst du mir vielleicht den code umschreiben das wäre echt nett ich fang erst an mit dem programmieren
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"
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)
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
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 / ...)
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.
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 😉