Hallo,
ich versuche ein kleine Rechenprogramm zu schreiben bei dem man 24 Kommazahlen eingibt. Das Programm soll dann immer 3 Zahlen miteinander multiplizieren (sollte 2925 mögliche Kombinationen geben) und mir dann diejenigen Produkte( mit den einzelnen Faktoren) anzeigen die in einem bestimmten Bereich liegen.
Das Programm muss nicht "schön" aussehen ich bin nur an den Ergebnissen interessiert...
Komme da nicht wirklich weiter..
a = float(input())
b = float(input())
.
.
.
x = float(input())
i=
for i in range ()
print i
Danke im Voraus...
Recht simples Rechenprogramm...
Verstehe das Problem leider nicht. Kannst du bitte versuchen das ein bisschen genauer zu beschreiben? Also welches Verhalten erwartest du und was passiert stattdessen tatsächlich? (Am Besten anhand eines kleines Beispiels) Und was für Code hast du schon geschrieben? Mit deinem Code da oben kann ich leider nicht viel Anfangen und so (wie er da steht) wird der Code auch nicht laufen.
Erstmal danke dass hier jemand geantwortet hat...
2024 stimmt, bin schon so verwirrt von den Erinnerungen an den Informatik Grundkurs an der Uni dass da nicht mehr viel geht im Köppes...
Es geht um optimale Teambildung und darum aus 24 Leuten die besten 3er Teams in bestimmten Bereichen zu bilden.
Das Programm sollte so laufen, dass ich 24 Zahlen eingebe, dann eine Range(bspw. 22,5-23,9) und dann alle Triples(bspw 2,5*3,1*2,9) angezeigt bekomme die in dieser Range liegen.
Kann mich noch daran erinnern das der damalige Dozent ein komplizierteres Rechenprogramm mit 7-8 Zeilen code in 2 Minuten gemacht hat und hab mir gedacht das sollte doch dann
nicht so kompliziert sein, aber denkste...
2024 stimmt, bin schon so verwirrt von den Erinnerungen an den Informatik Grundkurs an der Uni dass da nicht mehr viel geht im Köppes...
Es geht um optimale Teambildung und darum aus 24 Leuten die besten 3er Teams in bestimmten Bereichen zu bilden.
Das Programm sollte so laufen, dass ich 24 Zahlen eingebe, dann eine Range(bspw. 22,5-23,9) und dann alle Triples(bspw 2,5*3,1*2,9) angezeigt bekomme die in dieser Range liegen.
Kann mich noch daran erinnern das der damalige Dozent ein komplizierteres Rechenprogramm mit 7-8 Zeilen code in 2 Minuten gemacht hat und hab mir gedacht das sollte doch dann
nicht so kompliziert sein, aber denkste...
Ja, 8 Zeilen kommt hin:Daniel123 hat geschrieben: Freitag 27. September 2019, 15:11 Kann mich noch daran erinnern das der damalige Dozent ein komplizierteres Rechenprogramm mit 7-8 Zeilen code in 2 Minuten gemacht hat und hab mir gedacht das sollte doch dann
nicht so kompliziert sein, aber denkste...
Code: Alles auswählen
In [1]: from itertools import combinations
In [2]: from functools import reduce
In [3]: from operator import mul
In [4]: from random import uniform
In [5]: numbers = [uniform(-20, 20) for _ in range(24)]
In [6]: triplets = ((triplet, reduce(mul, triplet)) for triplet in combinations(numbers, 3))
In [7]: for item in filter(lambda x:-50.0 < x[1] < 50.0, triplets):
...: print(item)

...oder doch:nezzcarth hat geschrieben: Freitag 27. September 2019, 15:46 Mit 'itertools.combinations' lässt es sich auch komfortabel mit den Sprachelementen (Listen, Schleifen, Abfragen, ggf. List Comprehensions), die im offiziellen Tutorial erklärt werden, lösen -- wenn auch nicht in 8 Zeilen![]()
Code: Alles auswählen
In [1]: from itertools import combinations
In [2]: numbers = [float(input()) for _ in range(24)]
In [3]: for triplet in combinations(numbers, 3):
....: # Wenn es immer nur Triplets sind, könnte natürlich auch einfach die drei Zahlen in einer Zeile multiplizieren...
...: product = 1
...: for item in triplet:
...: product *= item
...: if 30.0 < product < 35.0:
...: print(triplet, product)
Das wusste ich nicht. Dauert ja nicht mehr so lange, bis es heraus kommtSirius3 hat geschrieben: Freitag 27. September 2019, 19:19 Ab Python 3.8 kann man auch einfach math.prod benutzen.

Vielen Dank für die Mühe, so weit wäre ich im Leben nicht gekommen.
Wenn ich versuche das Programm laufen zu lassen bekomme ich die Fehlermeldung from (vor itertools) invalid syntax,
ich habe die aktuellste Python version muss ich da noch etwas importieren oder am code ergänzen?
Wenn ich versuche das Programm laufen zu lassen bekomme ich die Fehlermeldung from (vor itertools) invalid syntax,
ich habe die aktuellste Python version muss ich da noch etwas importieren oder am code ergänzen?
- __blackjack__
- User
- Beiträge: 14047
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Daniel123: Du musst da noch was am Code ”ergänzen”. Einfach mal das Tutorial in der Python-Dokumentation durcharbeiten um zu sehen wie Python-Quelltext aussieht und dann ein ganz kleines bisschen überlegen was denn an dem gezeigten Quelltext anders ist. 
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Das Programm läuft jetzt, zumindest ohne Fehlermeldung. Weiß allerdings nicht wie ich die Werte und den Zielbereich eingeben soll.Ich werd mein Bestes geben und mich nochmal melden falls ich nicht weiterkomm... Kaum zu glauben aber ich hab damals das Python Modul mit 2,3 bestanden...
@nezzcarth für die Mühe die du dir da gemacht hast würde ich mich gern erkenntlich zeigen, wenn du einen Verein oder eine Organisation etc. unterstützt würde ich dir zu Ehren da ein paar Euronen spenden...
@nezzcarth für die Mühe die du dir da gemacht hast würde ich mich gern erkenntlich zeigen, wenn du einen Verein oder eine Organisation etc. unterstützt würde ich dir zu Ehren da ein paar Euronen spenden...
Im zweiten Beispiel habe ich ja einen Hinweis gegeben, wie man das machen kann. Mit 'input()' kann man Eingaben erfragen und diese müssen dann in den passenden Datentyp (float) konvertiert werden. Die Frage wäre halt auch, welches Interface du dir vorstellst. Wäre das Skript für mich, würde ich vermutlich den Wertbereich als Kommandozeilen Parameter abfragen und die Zahlen aus einer Textdatei einlesen.Daniel123 hat geschrieben: Sonntag 29. September 2019, 05:38 Weiß allerdings nicht wie ich die Werte und den Zielbereich eingeben soll.
Hier mal ein simples funktionsfähiges Beispiel, das sich auf grundlegende Sprachbestandteile beschränkt. Das kann man noch deutlich schöner schreiben:
Code: Alles auswählen
#!/usr/bin/env python
from itertools import combinations
N = 24
def read_number(message=''):
while True:
content = input(message)
try:
return float(content)
except ValueError:
print('Invalid input.')
def main():
lower = read_number('Lower limit: ')
upper = read_number('Upper limit: ')
if lower >= upper:
raise ValueError
numbers = []
print('Numbers:')
for i in range(N):
number = read_number('{}. '.format(i + 1))
numbers.append(number)
print('=' * 79)
for triplet in combinations(numbers, 3):
product = 1
for item in triplet:
product *= item
if lower < product < upper:
print('{} * {} * {} = {}'.format(*triplet, product))
if __name__ == '__main__':
main()
Das ist eine nette Geste, aber kostenlose Hilfe ist ja der Zweck des Forums.Daniel123 hat geschrieben: Sonntag 29. September 2019, 05:38 @nezzcarth für die Mühe die du dir da gemacht hast würde ich mich gern erkenntlich zeigen, wenn du einen Verein oder eine Organisation etc. unterstützt würde ich dir zu Ehren da ein paar Euronen spenden...

Zuletzt geändert von nezzcarth am Sonntag 29. September 2019, 16:04, insgesamt 1-mal geändert.
- __blackjack__
- User
- Beiträge: 14047
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Wobei Textdatei ja auch `sys.stdin` sein kann, dann kann man sich überlegen ob man die Zahlen eingeben möchte oder aus einer Datei in das Programm ”reinpipen” möchte.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Ich war schon kurz davor aufzugeben und muss auch ehrlich gestehn dass hätte ich so nie hinbekommen...
Nochmals Vielen Dank an alle die hier aktiv waren und @nezzcarth bei mir in der Nähe ist so eine Art buddhistischer Schrein da hab ich ein paar Räucherstäbchen für dich entzündet, wenn dich also in nächster Zeit
plötzlich ein wohlig wärmeliges Gefühl überkommt nicht wundern, dass ist der positive Karma-Regen der auf dich niedergeht ich hoffe das geht klar und fällt noch unter die Rubrik kostenlos
Nochmals Vielen Dank an alle die hier aktiv waren und @nezzcarth bei mir in der Nähe ist so eine Art buddhistischer Schrein da hab ich ein paar Räucherstäbchen für dich entzündet, wenn dich also in nächster Zeit
plötzlich ein wohlig wärmeliges Gefühl überkommt nicht wundern, dass ist der positive Karma-Regen der auf dich niedergeht ich hoffe das geht klar und fällt noch unter die Rubrik kostenlos
