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
Mini Rechenprogramm mit Python schreiben
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
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
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
@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.
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 Antwort!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
Nein,set sagt mir (noch) nichts. Kannst du mir sagen wie das denn mit set gehen/aussehen würde?
Gruß StareDog
@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"))
))
Danke für die Nachricht Sirius.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.
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.
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
ein Set reduziert eine Sequenz darauf, dass jedes Element genau 1x vorkommt. Allg. Beispiel:
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
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'}
>>>
Plan B: hatten ihr schon Listen und den `in` Operator?
Gruß, noisefloor
ja das stimmt. trotzdem danke!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")) ))
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 verstehenoisefloor hat geschrieben:Hallo,
ein Set reduziert eine Sequenz darauf, dass jedes Element genau 1x vorkommt. Allg. Beispiel:
Aber wie Sirius3 schon sagt: wenn du set() nicht kennst, dann ist das keine Lösung für dich.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'} >>>
Plan B: hatten ihr schon Listen und den `in` Operator?
Gruß, noisefloor
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
ok - dann musst du doch den Ansatz über "if... elif ... else ..." wählen.
Gruß, noisefloor
ok - dann musst du doch den Ansatz über "if... elif ... else ..." wählen.
Gruß, noisefloor
@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.