Hallo,
ich bin neu hier in diesem Forum und hoffe ich formuliere diese Frage gut und verständlich.
Ich bin gerade dabei ein Programm zu erstellen, welches zahlen einliest und danach diese zahlen nach der Größe sortiert. Nun bin ich an einem Punkt an dem ich mir den Index-Wert ausgeben lassen will um diesen danach weiter zu verwenden, doch irgendwie funktioniert das nicht es kommt kein Error usw aber eine Ausgabe bekomme ich leider auch nicht. Kann mir jemand hier bitte weiterhelfen? Wo sich das genaue Problem befindet, habe ich Fett formatiert.
Ich freue mich über Rückmeldung
array = []
for zahl in range(1,11):
array.append(zahl)
#Array deklariert und initialisiert
pmin = array[0]
for i in range(len(array)):
if pmin > array:
pmin = array
for counter in range(len(array)):
if array[counter] == pmin:
print(counter)
merke = array[0]
array[0] = pmin
For-Schleife Indexwerte Frage
@darktrym: das ist ein Darstellungsproblem, weil [ i ] als italic vom Forum interpretiert wird.
@meert62: Ein `array` ist in Python etwas anderes, Du hast hier Listen. In Python werden keine Variablen deklariert, man benutzt sie einfach. Die erste for-Schleife läßt sich durch einen `list`-Aufruf vereinfachen.
Da Du schon eine Liste mit aufsteigenden Zahlen hast, ist pmin, die erste Zahl, auch die kleinste, pmin > array[ i ] also nie erfüllt.
@meert62: Ein `array` ist in Python etwas anderes, Du hast hier Listen. In Python werden keine Variablen deklariert, man benutzt sie einfach. Die erste for-Schleife läßt sich durch einen `list`-Aufruf vereinfachen.
Da Du schon eine Liste mit aufsteigenden Zahlen hast, ist pmin, die erste Zahl, auch die kleinste, pmin > array[ i ] also nie erfüllt.
- __blackjack__
- User
- Beiträge: 14056
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@meert62: `merke` wird nirgends verwendet.
`i` wird nur für den Indexzugriff verwendet. Das ist aber unnötig indirekt, weil man in Python *direkt* über die Elemente von Listen itererieren kann.
Wenn man eine laufende Zahl *zusätzlich* zu jedem Element braucht, gibt es `enumerate()`.
Was soll der Name `pmin` denn eigentlich bedeuten? Wofür steht das `p` und warum muss man das als Leser raten?
Wobei das wiederverwenden von `number` in der inneren Schleife nicht schön ist. Die würde ich wohl in eine Funktion auslagern.
Ansonsten sieht das so ein bisschen so aus als würde der Code effektiv einfach nur das hier machen:
Was sich, falls `numbers` tatsächliche immer *so* aussieht ganz einfach auf das hier reduzieren lässt:
Natürlich unter der Vorussetzung das mit `numbers` danach noch irgend etwas gemacht wird, denn ansonsten kann man sich das Programm auch komplett sparen. 
`i` wird nur für den Indexzugriff verwendet. Das ist aber unnötig indirekt, weil man in Python *direkt* über die Elemente von Listen itererieren kann.
Wenn man eine laufende Zahl *zusätzlich* zu jedem Element braucht, gibt es `enumerate()`.
Was soll der Name `pmin` denn eigentlich bedeuten? Wofür steht das `p` und warum muss man das als Leser raten?
Code: Alles auswählen
#!/usr/bin/env python3
def main():
numbers = list(range(1, 11))
pmin = numbers[0]
for number in numbers:
if pmin > number:
pmin = number
for index, number in enumerate(numbers):
if number == pmin:
print(index)
numbers[0] = pmin
if __name__ == "__main__":
main()
Ansonsten sieht das so ein bisschen so aus als würde der Code effektiv einfach nur das hier machen:
Code: Alles auswählen
#!/usr/bin/env python3
def main():
numbers = list(range(1, 11))
numbers[0] = min(numbers)
if __name__ == "__main__":
main()
Code: Alles auswählen
#!/usr/bin/env python3
def main():
numbers = list(range(1, 11))
if __name__ == "__main__":
main()
“Vir, intelligence has nothing to do with politics!” — Londo Mollari