Einfache Anfängerfrage

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Brevista
User
Beiträge: 32
Registriert: Sonntag 2. Juli 2017, 00:48

Code: Alles auswählen

def F(n):
	m = 1

	
	while m < 11:
		e = n*m
		print(e)
		m = m+1
	i = i + 1
i = 1		
F(i)
Hallo, ich wollte hier einfach alle Ergebnisse des kleinen 1 mal 1 auflisten
Leider weiß ich nicht wie ich hier i (also die zahl) nach jedem Durchlauf mit allen Multiplikatoren (m) von 1 - 10 um eins erhöhen kann.
der Code ohne

Code: Alles auswählen

i = i + i
würde gehen aber dann würden nur die Zahlen 1 multipliziert werden und nicht nach jedem Durchlauf erhöht werden. Wie kann ich den Code einfach schreiben (bitte keine neuen codes sondern diesen verbessern, Danke)das es funktioniert.

Danke im Voraus


Nachtrag:

Mir ist klar das ich es auch so schreiben könnte:

Code: Alles auswählen

def F(n):
	m = 1

	
	while m < 11:
		e = n*m
		print(e)
		m = m+1
	
		
F(1)
F(2)
F(3)
F(4)
F(5)
F(6)
F(7)
F(8)
F(9)
F(10)
Aber ist das nicht später verwirrend und kann einfacher geschrieben werden?
Zuletzt geändert von Anonymous am Sonntag 2. Juli 2017, 11:51, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
nezzcarth
User
Beiträge: 1636
Registriert: Samstag 16. April 2011, 12:47

Du brauchst zwei Schleifen. Wenn es so gegliedert sein soll, dass die Funktion jeweils die Produkte für einen gegebenen Multiplikanden ausgeben soll,
muss der Funktionsaufruf in einer Schleife stattfinden. Ansonsten, wenn man ganz auf Funktionen verzichtet, sind es zwei unmittelbar verschachtelte Schleifen.
Allerdings würde man in Python nicht explizit Werte hoch zählen, sondern auf sprachspezifische Mittel zurückgreifen.

Ohne Funktion sieht das dann einfach so aus:
(python3)

Code: Alles auswählen

for multiplicand in range(2, 11):
    for multiplier in range(1, 11):
        print('{} * {} = {}'.format(multiplier, multiplicand, multiplier * multiplicand))
Brevista
User
Beiträge: 32
Registriert: Sonntag 2. Juli 2017, 00:48

Lösung:

Code: Alles auswählen

def a(z):
	m = 1
	while m < 11:
		e = z * m
		print(e)
		m = m + 1
b = 1
a(b)
while b < 11:
	b = b + 1
	a(b)
Hier mein überarbeiteter code, wenn jemand eine einfachere lösung hat mit einfachen commands einfach schreiben :D
Zuletzt geändert von Anonymous am Sonntag 2. Juli 2017, 23:08, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@Brevista: die einfachere Lösung hat doch nezzcarth schon gezeigt.
nezzcarth
User
Beiträge: 1636
Registriert: Samstag 16. April 2011, 12:47

Brevista hat geschrieben:Hier mein überarbeiteter code, wenn jemand eine einfachere lösung hat mit einfachen commands einfach schreiben :D
Na ja, wenn du in einem Python-Forum nach einer Antwort fragst, bekommst du Python-Code. Was du da zeigst ist im Grunde kein Python sondern eher C, Pascal, Basic oder so als Python getarnt. Python zeichnet sich ja genau dadurch aus, dass man diesen ganzen unschönen Kram wie beispielsweise das Hochzählen von Variablen in Schleifen kurz und elegant hinschreiben kann. Wenn du das nicht möchtest, ist Python vielleicht nicht die richtige Programmiersprache.
Zuletzt geändert von nezzcarth am Sonntag 2. Juli 2017, 20:30, insgesamt 2-mal geändert.
Brevista
User
Beiträge: 32
Registriert: Sonntag 2. Juli 2017, 00:48

Ich habe erst vor kurzem mit python angefangen.
Ich kenne daher erst die einfach commands (habe bis jetzt noch keine Programmiersprache gelernt, und will jetzt mit python anfangen da diese sehr einfach ist.)

falls jemand noch eine Tip für mich ( als Anfänger) hat einfach schreiben!
bergen123
User
Beiträge: 13
Registriert: Mittwoch 29. März 2017, 16:31

@Brevista

ich bin auch ein anfänger... und ich denke das beste lösunger und einfacher ist was nezzcarth geschrieben hat.... wenn man Iterationen nutzen möchtet .... http://www.python-kurs.eu/for-schleife.php
als Beispiel , ich bin kein deutsch und was ich in der deutsche Sprachschule gelernt habe , war "ein bisschen" andere, wie deutsch wird gesprochen :D

deshalb ich denke das nezzcarth code ist mehr python code als deine...

Code: Alles auswählen

    for multiplicand in range(2, 11):
        for multiplier in range(1, 11):
            print('({}) * {} = {}'.format(multiplier, multiplicand, multiplier * multiplicand))
Zizibee
User
Beiträge: 229
Registriert: Donnerstag 12. April 2007, 08:36

@Brevista: Wenn du bei deinem Aufbau bleiben willst, kannst du auch die Lösung von nezzcarth etwas umbauen

Code: Alles auswählen

def calculation(multiplicand):
    for multiplier in range(1, 11):
        print('{} * {} = {}'.format(multiplier, multiplicand, multiplier * multiplicand))

for multiplicand in range(2, 11):
    calculation(multiplicand)
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

Python bietet unglaublich praktische Funktionen, um "höhere" Programme zu schreiben. Hierbei kann man sehr beschreibend vorgehen, wie man es von der Mathematik gewöhnt ist. Man muss sich weniger an den Einzelheiten aufhalten, welche eine pure imperative Herangehensweise bedingt.

Zunächst muss man sich dem Problem bewusst werden: Was ist das Einmaleins?

Das kleine Einmaleins ist die Menge zweier Faktoren und deren Produkte, für die gilt, dass die Faktoren Elemente aus der Menge {1, 2, ..., 10} sind.

Hier biete sich das kartesische Produkt an, um die möglichen Faktorkombinationen zu beschreiben:[codebox=pycon file=Unbenannt.txt]>>> from itertools import product # kartesisches Produkt
>>> list(product({1, 2}, {'a', 'b', 'c'}))
[(1, 'a'), (1, 'c'), (1, 'b'), (2, 'a'), (2, 'c'), (2, 'b')][/code]
Wendet man dieses nun auf die Menge der natürlichen Zahlen an, welche Faktoren des kleinen Einmaleins sind ({1, 2, ..., 10}) erhält man 100 2-Tupel mit den Faktorkombinationen:[codebox=pycon file=Unbenannt.txt]>>> xs = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
>>> list(product(xs, xs))
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7), (1, 8), (1, 9), (1, 10), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (2, 7), (2, 8), (2, 9), (2, 10), (3, 1), (3, 2), (3, 3), (3, 4), ..., (10, 8), (10, 9), (10, 10)] # Ergebnis gekürzt[/code]
Mittels tuple-unpacking und einer for-Schleife kann man nun auf die einzelnen Elemente des Tupels zugreifen und z. B. weiterverarbeiten oder ausgeben:[codebox=pycon file=Unbenannt.txt]>>> for a, b in product(xs, xs):
... print('{} * {} = {}'.format(a, b, a * b))
...
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
1 * 4 = 4
1 * 5 = 5
1 * 6 = 6
1 * 7 = 7
1 * 8 = 8
1 * 9 = 9
1 * 10 = 10
2 * 1 = 2
2 * 2 = 4
# ...
10 * 8 = 80
10 * 9 = 90
10 * 10 = 100
# ... Ergebnis gekürzt[/code]
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
Brevista
User
Beiträge: 32
Registriert: Sonntag 2. Juli 2017, 00:48

Ich habe soeben den code von nezzcarth angeschaut, und habe jetzt den command range verstanden, was ich aber nicht verstehe ist das print.
nur um nochmal zu verstehen diese code ist ein ähnlicher wie der von nezzcarth oder?nur das hier nicht range sondern eine liste mit den zahlen benutzt wird.

Code: Alles auswählen

Zahlen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for zahl in x:
	for multi in x:
		print (multi * zahl)
Zuletzt geändert von Anonymous am Montag 3. Juli 2017, 17:26, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

Durch Anschauen alleine wirst Du das schwer nachvollziehen können. Probiere die einzelnen Bestandteile im Interpreter aus und kombiniere diese dann schrittweise.
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
bergen123
User
Beiträge: 13
Registriert: Mittwoch 29. März 2017, 16:31

@ Brevista

so, das print von nezzcarth ....

print('{} * {} = {}'.format(multiplier, multiplicand, multiplier * multiplicand))

- '{} * {} = {}' . Erste{} = Anfang zu zahlen(1, 2, 3,....10) . * Multipliziert mit demZweite {}. Der Zweite {} = Anfang zu zahlen ab 2 (2, 3, 4.... 10) , die du bevor mit range gemacht hast .

Hier sagst wie print


- Die bedeutung von format https://pyformat.info/


- format(multiplier, multiplicand, multiplier * multiplicand . Mit dem Erste multliplier (1, 2, 3,...10) und Zweite multiplicand (2,3,4...10) werden print in {} * {}
mit multiplier * multiplicand werden die Ergebnisse in = {} print .

Hier sagst was print :wink:
Brevista
User
Beiträge: 32
Registriert: Sonntag 2. Juli 2017, 00:48

Vielen Dank an alle für die Hilfe :)
Antworten