Hier ein Beispiel mit sinnvolleren Variablennamen
Code: Alles auswählen
values = [3,6,4,2,8,5,5,1]
mask = [1,0,0,1,1,1,0,0]
for value, active in zip(values, mask):
do_someting()
Code: Alles auswählen
values = [3,6,4,2,8,5,5,1]
mask = [1,0,0,1,1,1,0,0]
for value, active in zip(values, mask):
do_someting()
Code: Alles auswählen
def Klammercheck(S):
asList = list(S)
count = 0
for i in asList:
if i == "(":
count +=1
else:
count -=1
if count == 0:
return True
else:
return False
K1 = "(()(())())()"; K2 = "())()()"; K3 = "((()))()(";
print K1,"ist",Klammercheck(K1)
print K2,"ist",Klammercheck(K2)
print K3,"ist",Klammercheck(K3)
Code: Alles auswählen
def Klammercheck(S):
XXXXXXXXXX
K1 = "(()(())())()"; K2 = "())()()"; K3 = "((()))()(";
print K1,"ist",Klammercheck(K1)
print K2,"ist",Klammercheck(K2)
print K3,"ist",Klammercheck(K3)
Was dort passiert und am Ende bei rauskommt, habe ich ja selbst erarbeitet. Meine Frage war nur, ob der Code so okay ist bzw. ob es "besser" bzw. kürzer geht, mit dem vorgegeben Programmskelett.bwbg hat geschrieben:Im Grunde zählst Du die Anzahl der öffnenden und die Anzahl der schließenden Klammern. String-Objekte besitzen die Methode count für solche Fälle. Wenn die Differenz gleich 0 ist, so ist die Klammerung nach Deiner Definition richtig. Demnach wäre der Funktionskörper ein Einzeiler.
Code: Alles auswählen
))((
Code: Alles auswählen
def check_brackets(text):
count = 0
for char in text:
if char == "(":
count += 1
else:
count -= 1
return count == 0
tests = [
"(()(())())()",
"())()()",
"((()))()(",
]
for test in tests:
print test, "ist", check_brackets(test)
Code: Alles auswählen
def check_brackets(text):
return text.count("(")*2 == len(text)
Code: Alles auswählen
In [11]: X = [3,6,4,2,8,5,5,1]
In [12]: Y = [1,0,0,1,1,1,0,0]
In [13]: sum(itertools.compress(X, Y))
Out[13]: 18
BlackJack hat geschrieben:Das mit dem Aufsummieren wenn in der zweiten Liste eine 1 steht, ist ein klarer Fall für `itertools.compress()`:Code: Alles auswählen
In [11]: X = [3,6,4,2,8,5,5,1] In [12]: Y = [1,0,0,1,1,1,0,0] In [13]: sum(itertools.compress(X, Y)) Out[13]: 18
Code: Alles auswählen
Line 4: NameError: name 'itertools' is not defined
Habe es ausprobiert, im codeskulptor ( kennt ihr das eigentlich?) zeigt er mir dann an:BlackJack hat geschrieben:@sharete: Man muss das Modul vorher natürlich importieren.
Code: Alles auswählen
from itertools import compress
X = [3,6,4,2,8,5,5,1]
Y = [1,0,0,1,1,1,0,0]
sum(itertools.compress(X, Y))
Code: Alles auswählen
def addition():
value1 = int(raw_input("Eingabe"))
value2 = int(raw_input("Eingabe"))
while value1 != 0 and value2 != 0:
print "x =",value1
print "y =",value2
print "x+y =",value1+value2
value1 = int(raw_input("Eingabe"))
value2 = int(raw_input("Eingabe"))
addition()
Also muss ich aus dem and einfach ein oder machenBlackJack hat geschrieben:@sharete: Was ergibt denn der Audruck bei ``while`` als Ergebnis wenn `value1` gleich 0 ist und `value2` gleich 5 ist? Setz die Werte doch mal ein und rechne das aus. Und dann mach Dir klar bei welchem Ergebnis der Schleifenkörper betreten wird und bei welchem nicht.
Code: Alles auswählen
def addition():
value1 = int(raw_input("Eingabe"))
value2 = int(raw_input("Eingabe"))
while value1 != 0 or value2 != 0:
print "x =",value1
print "y =",value2
print "x+y =",value1+value2
value1 = int(raw_input("Eingabe"))
value2 = int(raw_input("Eingabe"))
addition()
Code: Alles auswählen
Schreiben Sie ein Programm, dass die Nettosumme eines Bankkontos basierend auf Einträgen aus der Transaktionsdatei berechnet, die an der Konsole eingegeben werden
Das Format der Transaktionsdatei soll wie folgt aussehen:
H 100
S 200
H bedeutet Haben und S bedeutet Soll.
Angenommen, die Eingabe für das Programm sieht wie folgt aus:
H 300
H 300
S 200
H 100
(Beachten Sie, dass der Buchstabe vom Betrag jeweils durch ein Blank getrennt ist)
Die Ausgabe des Programmes sollte dann wie folgt aussehen:
500
Code: Alles auswählen
def habensoll():
eingabe = 0
gesamt = 0
while eingabe!="abbruch":
eingabe = raw_input("Haben oder Soll")
if eingabe[0] == "H":
eingabe=eingabe.split("H")
eingabe.pop(0)
umwandeln = int(eingabe[0])
gesamt = gesamt + umwandeln
elif eingabe[0] == "S":
eingabe = eingabe.split("S")
eingabe.pop(0)
umwandeln2 = int(eingabe[0])
gesamt = gesamt - umwandeln2
print gesamt
habensoll()
Code: Alles auswählen
def habensoll():
gesamt = 0
while True:
eingabe = raw_input('Haben oder Soll')
if eingabe == 'abbruch':
break
haben_oder_soll, wert = eingabe.split()
if haben_oder_soll == 'H':
faktor = 1
elif haben_oder_soll == 'S':
faktor = -1
else:
faktor = 0
gesamt += int(wert) * faktor
print gesamt
Code: Alles auswählen
def addition():
value1 = int(raw_input("Eingabe"))
value2 = int(raw_input("Eingabe"))
while True:
print "x =",value1
print "y =",value2
print "x+y =",value1+value2
value1 = int(raw_input("Eingabe"))
value2 = int(raw_input("Eingabe"))
if value1 == 0 and value2 == 0:
break
addition()