Python 3 – die besten Beiträge

Python3: For-Schleife überspringt Element der Liste?

Hallo!

Ich wollte letztens in Python (3.7.4) mit einer for-Schleife durch eine Liste gehen, um jedes Element unter einer bestimmten Bedingung aus der Liste zu löschen.

Eine stark vereinfachte Version könnte so aussehen:

l = [1,2,3,4,5]

for i in l:

____print(i)

____if i == 2: l.remove(i)

____if i == 3: l.remove(i)

print(l)

Hier möchte ich also alle Zweien und Dreien löschen. Das ganze geht natürlich effektiver, übersichtlicher und schöner, aber meine Bedingungen waren ja auch etwas komplizierter und hier geht es nur ums Prinzip.

Die Ausgabe sollte dann meinen Erwartungen entsprechend so aussehen:

1

2

3

4

5

[1,4,5]

Tatsächlich sieht sie dann aber so aus:

1

2

4

5

[1,3,4,5]

In der for-Schleife ist niemals i == 3. Das ist darauf zurückzuführen, dass durch das Löschen der 2 alle Elemente in der Liste einen Platz nach links rutschen, wobei die for-Schleife um das nächste Element durchzugehen einen Schritt weiter nach rechts geht. Dabei werden all jene Elemente übersprungen, die hinter einem zu löschenden Element kommen. Das kann man sich so zwar erklären, ist aber nicht intuitiv.

Und eingebettet in mein Programm hat die Fehlersuche ewig gedauert, wer rechnet schon damit, dass die for-Schleife ein Listenelement überspringt?

Ich wollte euch hier nur diesen interessanten Fund zeigen und euch auch nach eurer Meinung dazu fragen :)

Der beste Lösungsansatz wäre doch die list-Comprehension, oder?

Was sagt ihr dazu?

Viele Grüße! :D

Computer, programmieren, Python 3

Exakten Wert beim Quadrieren von Floats (Python)?

Hallo,

heute bin ich mit einem Bug im Rucksack unterwegs.

Ich versuche folgende Zahl 11.313708498984761 in Python zu quadrieren. Das Ergebnis müsste 128 sein, doch er gibt 128,00000000000003 aus und ich verstehe nicht wie ich das präzisieren könnte.

Es wäre schön, falls mir jemand weiterhelfen könnte.

Mit freundlichen Grüßen

JUCEL

PS: Hier mein derzeitiger Code:

# This Script was made to calculate the distance to celestial bodies in space (nearby milkyway).
import math
import decimal
import datetime
import random, string

sin = math.sin;
degrees = math.radians;
decimal.getcontext().prec = 200;
decimal = decimal.Decimal;


# Log-File, Datum, Star-Name

request = input("Hello, please choose between following options:\nDistance-Calculator [1] \nProtokoll [2]\nExit [q]\nOption: ")

if request == str("1"):

    print("Please insert following required data:")

    angle1 = input("Angle 1 (°): ")
    angle2 = input("Angle 2 (°): ")

    distance_In = decimal(input("Distance between the angles (Kilometre): "))



    # Angles

    summary = decimal(angle1) + decimal(angle2)
    angle3 = 180 - float(summary)

    # Distances

    distance_In_parsec = distance_In * decimal(0.000000000000060019)

    # Distance_a

    distance_out_a_parsec = decimal(distance_In) * decimal((sin(degrees(decimal(angle1)))/sin(degrees(decimal(angle3))))) * decimal(0.000000000000060019)
    distance_out_a_ligh_years = decimal(distance_out_a_parsec) * decimal(3.26156)
    distance_out_a_astronomic_unit = decimal(distance_out_a_parsec) * decimal(206265)

    print("Distance a: \n ", distance_out_a_parsec, "parsec \n ", distance_out_a_ligh_years, "ly \n", distance_out_a_astronomic_unit, "AU \n")

    # Distance_b

    distance_out_b_parsec = decimal(distance_In) * decimal((sin(degrees(decimal(angle2)))/sin(degrees(decimal(angle3))))) * decimal(0.000000000000060019)
    distance_out_b_ligh_years = decimal(distance_out_b_parsec) * decimal(3.26156)
    distance_out_b_astronomic_unit = decimal(distance_out_b_parsec) * decimal(206265)

    print("Distance b: \n ", distance_out_b_parsec, "parsec \n ", distance_out_b_ligh_years, "ly \n", distance_out_b_astronomic_unit, "AU \n")

    # Distance_center
    half = decimal(distance_In)/2

    distance_out_center_dump = distance_out_a_parsec * distance_out_a_parsec - half * half

    distance_out_center_parsec = decimal(math.sqrt(abs(decimal(distance_out_center_dump)))) * decimal(0.000000000000060019)
    distance_out_center_light_years = decimal(distance_out_center_parsec) * decimal(3.26156)
    distance_out_center_astronomic_unit = decimal(distance_out_center_parsec) * decimal(206265)

    print("Distance from the center of ellipsis: \n ", distance_out_center_parsec, "parsec \n ", distance_out_center_light_years, "ly \n", distance_out_center_astronomic_unit, "AU")

# Protocol

elif request == str("2"):
    pass

elif request == str("q"):
    exit(0)
Computer, programmieren, Informatik, Python, Python 3

Flächeninhaltrechner in python funktioniert nicht?

Hallo,

Ich programmiere gerade einen Taschenrechner für Flächeninhalte von Formen, den ich immer weiter erweitere, nur irgendwie läuft der Code nicht, und ich glaube es liegt am else, aber wie geht es richtig?

print("Bitte maße mit . eingeben! Zum Beispiel: c = 3,5 cm Gebe ein: 3.5 bei ganzen Zahlen mit .0 angeben \n Zum Beispiel: 3.0")
print("sie können den Flächeninhalt von folgenden Formen berechnen:")
print("Dreieck, Quadrat, Rechteck, Trapez")


Form = input("Von welcher geometrischen Form wollen Sie die den Flächeninhalt berechnen?")


if Form == "Dreieck":
    print("Dreieck berechnen")
    c = float(input("Bitte maße für Grundlinie angeben"))
    h = float(input("Bitte maße für Höhe oder bei rechtwinkligen Seite neben rechten Winkel angeben"))
    Flächeninhalt = 1/2*c*h



elif Form == "Quadrat":
    print("Quadrat berechnen")
    a = float(input("Bitte die Länge einer Seite angeben"))
    Flächeninhalt = a*a



elif Form == "Rechteck":
    print("Quadrat berechnen...")
    a = float(input("Bitte die Länge einer Seite angeben"))
    b = float(input("Bitte die Länge einer danebenliegenden Seite angeben"))
    Flächeninhalt = a*b


else Form == "Trapez":
    print("Trapez berechnen...")
    a = float(input("Bitte Maße der Grundlinie angeben"))
    c = float(input("Bitte Maße der oberen Linie angeben"))
    h = float(input("Bitte Höhe angeben"))
    Flächeninhalt = 1/2*(a+c)*h



print("Flächeninhalt berechnen...")
print(Flächeninhalt)

Danke

programmieren, Python, Python 3

Meistgelesene Beiträge zum Thema Python 3