ich arbeite zurzeit paar Übungsaaufgaben durch und hänge seit nunmehr einem Tag an einem ansich trivialen Problem.
Aufgabe:
- String mit Zahlen wobei es immer eine Zahl gibt, die gerade (Rest ist dann ungrade) ist oder umgekehrt
- Ich soll die Stelle der Liste ausgeben, wo diese "Ausnahme" vorkommt (also der Key +1 für die einzige gerade oder ungerade Zahl in der Liste)
Vorgehen:
- String wird mit strip und split in eine Liste umgewandelt
- Liste in einer for Schleife durchlaufen und bestimmt, was die Ausnahme ist (gerade oder ungrade Zahl)
- Ausnahme wird mit neuer for Schleife herausgesucht und soll entsprechend ausgegeben werden
- Hierzu verwende ich den Bitoperator "&" mit Verbinung mit 1 oder 0, um zu prüfen, ob es sich um eine gerade oder ungerade Zahl handelt
- Die einzige gerade Zahl mit Index 1 (an der zweiten Stelle) wird nicht wie erwartet gefunden und ausgegeben.
- Obwohl also die Bedingung " if int(value) & 0:" true ist, wird der relevante Programmabschnitt dieser Bedingung im Fall der gerade Zahl in dem Beispiel nicht durchlaufen
hier mein Code:
Code: Alles auswählen
def test_werte(numbers):
input_as_list = numbers.strip().split(" ")
odd = 0
even = 0
intermediate_even = 0
intermediate_odd = 0
for element in input_as_list:
if int(element) & 1:
odd += 1
else:
even += 1
print(odd, even)
if odd > even:
for key, value in enumerate(input_as_list):
if int(value) & 0:
intermediate_even = int(key) + 1
print(intermediate_even)
else:
for key, value in enumerate(input_as_list):
if int(value) & 1:
intermediate_odd = int(key) + 1
print(intermediate_odd)
test_werte("3 28 25 9 5 23 51 15 25 13 41 5 49 21 19 9 35 19 27")