Seite 1 von 1
Mini Rechenprogramm mit Python schreiben
Verfasst: Sonntag 22. April 2018, 09:20
von StareDog
Hallo zusammen,
entschuldigt meine Unwissenheit. Ich hab meine erste Programmierungsvorlesung gehabt und soll ein Miniprogramm schreiben.
Die Aufgabenstellung:
Schreiben Sie je ein Python-Programm, das drei ganze Zahlen x, y und z von der Konsole einliest und Folgendes berechnet und auf der Konsole ausgibt:
Die Anzahl der verschiedenen Werte. zB. x=4, y=2, z = 4 --> Ergebnis = 2
x = input ()
y = input ()
z = input ()
if x ==y ==z:
Ergebnis = 1
print (Ergebnis)
elif x == y != z or x == z != y or y == z != x:
Ergebnis = 2
print (Ergebnis)
else x != y != z
Ergebnis = 3
print (Ergebnis)
Geht das in die richtige Richtung?
Würde mich freuen, wenn mir jemand helfen kann.
Mit freundlichen Grüßen
StareDog
Re: Mini Rechenprogramm mit Python schreiben
Verfasst: Sonntag 22. April 2018, 09:23
von noisefloor
Hallo,
normalerweise würde man das mit einem Set machen, das ist wesentlich einfacher als da, was du machst. Set gehört zu den Grunddatentypen von Python. Hatte ihr das in der Vorlesung schon?
Gruß, noisefloor
Re: Mini Rechenprogramm mit Python schreiben
Verfasst: Sonntag 22. April 2018, 09:53
von Sirius3
@StareDog: laut Aufgabenstellung sollst Du ganze Zahlen verwenden (da wären dann i, j, k üblicher als x, y, z, meinetwegen noch a, b, c).
Dann wäre noch ganz nett, den Nutzer wissen zu lassen, was er denn eingibt.
Die Syntax von »else« ist falsch und beim »elif« braucht man nicht das zu prüfen, was durch die erste Bedingung sowieso schon gegeben ist. Ist eine Zeile in allen if/elif/else-Blöcken enthalten, kann man sie auch effizienter nach den Blöcken schreiben.
Re: Mini Rechenprogramm mit Python schreiben
Verfasst: Montag 23. April 2018, 08:15
von StareDog
noisefloor hat geschrieben:Hallo,
normalerweise würde man das mit einem Set machen, das ist wesentlich einfacher als da, was du machst. Set gehört zu den Grunddatentypen von Python. Hatte ihr das in der Vorlesung schon?
Gruß, noisefloor
Danke für die Antwort!
Nein,set sagt mir (noch) nichts. Kannst du mir sagen wie das denn mit set gehen/aussehen würde?
Gruß StareDog
Re: Mini Rechenprogramm mit Python schreiben
Verfasst: Montag 23. April 2018, 08:19
von Sirius3
@StareDog: Du solltest die Aufgabe mit den Mitteln lösen, die Du schon kennst.
Code: Alles auswählen
print("Ergebnis = {}".format(
len(set(input("{} = ".format(n)) for n in "xyz"))
))
Re: Mini Rechenprogramm mit Python schreiben
Verfasst: Montag 23. April 2018, 08:25
von StareDog
Sirius3 hat geschrieben:@StareDog: laut Aufgabenstellung sollst Du ganze Zahlen verwenden (da wären dann i, j, k üblicher als x, y, z, meinetwegen noch a, b, c).
Dann wäre noch ganz nett, den Nutzer wissen zu lassen, was er denn eingibt.
Die Syntax von »else« ist falsch und beim »elif« braucht man nicht das zu prüfen, was durch die erste Bedingung sowieso schon gegeben ist. Ist eine Zeile in allen if/elif/else-Blöcken enthalten, kann man sie auch effizienter nach den Blöcken schreiben.
Danke für die Nachricht Sirius.
So sieht es mittlerweile aus.
x = input ("x")
y = input ("y")
z = input ("z")
if x ==y ==z:
Ergebnis = 1
elif x == y != z or x == z != y or y == z != x:
Ergebnis = 2
else:
Ergebnis = 3
print (Ergebnis
print (Ergebnis) habe ich jetzt hinten angestellt, weil diese zeile sich wiederholt, wie du meintest.
warum muss ich elif nicht prüfen? die Bedingungen sind doch durch die erste Bedingung noch nicht gegeben? kannst du erklären was du meinst?
wenn ich x==y==z und x!=y!=z prüfe, könnte ich theoretisch elif weglassen, da wenn diese 2 Bedingungen falls ungültig ja nur noch den elif fall zulassen.
Re: Mini Rechenprogramm mit Python schreiben
Verfasst: Montag 23. April 2018, 08:26
von noisefloor
Hallo,
ein Set reduziert eine Sequenz darauf, dass jedes Element genau 1x vorkommt. Allg. Beispiel:
Code: Alles auswählen
>>> a = set([1, 2, 3])
>>> len(a)
3
>>> b = set([2, 4, 2])
>>> len(b)
2
>>> b
{2, 4}
>>> c = '12341234'
>>> set(c)
{'3', '1', '2', '4'}
>>>
Aber wie Sirius3 schon sagt: wenn du set() nicht kennst, dann ist das keine Lösung für dich.
Plan B: hatten ihr schon Listen und den `in` Operator?
Gruß, noisefloor
Re: Mini Rechenprogramm mit Python schreiben
Verfasst: Montag 23. April 2018, 08:26
von StareDog
Sirius3 hat geschrieben:@StareDog: Du solltest die Aufgabe mit den Mitteln lösen, die Du schon kennst.
Code: Alles auswählen
print("Ergebnis = {}".format(
len(set(input("{} = ".format(n)) for n in "xyz"))
))
ja das stimmt. trotzdem danke!
Re: Mini Rechenprogramm mit Python schreiben
Verfasst: Montag 23. April 2018, 08:30
von StareDog
noisefloor hat geschrieben:Hallo,
ein Set reduziert eine Sequenz darauf, dass jedes Element genau 1x vorkommt. Allg. Beispiel:
Code: Alles auswählen
>>> a = set([1, 2, 3])
>>> len(a)
3
>>> b = set([2, 4, 2])
>>> len(b)
2
>>> b
{2, 4}
>>> c = '12341234'
>>> set(c)
{'3', '1', '2', '4'}
>>>
Aber wie Sirius3 schon sagt: wenn du set() nicht kennst, dann ist das keine Lösung für dich.
Plan B: hatten ihr schon Listen und den `in` Operator?
Gruß, noisefloor
ne wir hatten bis jetzt fast noch gar nichts in der vorlesung. input(), print(), float() das waren so ziemlich alle befehle. ich habe vor letzter woche noch nie selbst programmiert. dauert noch ein wenig bis ich diese sachen verstehe

Re: Mini Rechenprogramm mit Python schreiben
Verfasst: Montag 23. April 2018, 08:33
von noisefloor
Hallo,
ok - dann musst du doch den Ansatz über "if... elif ... else ..." wählen.
Gruß, noisefloor
Re: Mini Rechenprogramm mit Python schreiben
Verfasst: Montag 23. April 2018, 10:33
von Sirius3
@StareDog: Du vergleichst immer noch Strings und keine Ganzzahlen. Was ich mit dem elif meinte ist, dass wenn der Fall `x == y == z` bereits durch das if ausgeschlossen ist, dann folgt aus x == y zwangsläufig y != z. Aus x != y != z folgt aber nicht x != z.