For-Schleife Indexwerte Frage

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
meert62
User
Beiträge: 1
Registriert: Mittwoch 26. Mai 2021, 14:22

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
Benutzeravatar
darktrym
User
Beiträge: 785
Registriert: Freitag 24. April 2009, 09:26

Wenn pmin eine Zahl ist und array eine Liste was soll ein Größer-Vergleich bringen?
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.
Benutzeravatar
__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?

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()
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:

Code: Alles auswählen

#!/usr/bin/env python3


def main():
    numbers = list(range(1, 11))
    numbers[0] = min(numbers)
    


if __name__ == "__main__":
    main()
Was sich, falls `numbers` tatsächliche immer *so* aussieht ganz einfach auf das hier reduzieren lässt:

Code: Alles auswählen

#!/usr/bin/env python3


def main():
    numbers = list(range(1, 11))
    

if __name__ == "__main__":
    main()
Natürlich unter der Vorussetzung das mit `numbers` danach noch irgend etwas gemacht wird, denn ansonsten kann man sich das Programm auch komplett sparen. 🙂
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten