2017-09-09 3 views
0

Ich habe zwei Versionen des gleichen Codes, eine kurze und eine lange. Ich möchte wirklich den kurzen verwenden, weil ich nicht weiß, wie viele Werte der Benutzer in das Wörterbuch eingibt.Wie füge ich die for-Schleife innerhalb des Wörterbuchschlüssels hinzu?

So ist die lange Version ist:

angles_1= {'angle_1': 'abc', 'angle_2': 'acb', 'angle_3': 'cab'} 
shared_vertex = 'c' 
print(angles_1['angle_1'][1]) 
print(angles_1['angle_2'][1]) 
print(angles_1['angle_3'][1]) 
if shared_vertex == (angles_1['angle_1'][1]): 
    print("{}".format(angles_1['angle_1']), 'is a vertically opposite angle') 
elif shared_vertex == (angles_1['angle_2'][1]): 
    print("{}".format(angles_1['angle_2']), 'is a vertically opposite angle') 
elif shared_vertex == (angles_1['angle_3'][1]): 
    print("{}".format(angles_1['angle_3']), 'is a vertically opposite angle') 
else: 
    print('There are no vertically opposite angles') 

Die kurze Version ist:

loop = 3 
for n in range(loop): 
    def to_ordinal(n:int) -> str: 
     endings = {1: "", 2: "", 3: ""} 
    if shared_vertex == (angles_1['angle_{}'.format(to_ordinal(n))[1]]): 
     print("{}".format(angles_1['angle_{}'.format(to_ordinal(n))]), 'is a vertically opposite angle') 
    else: 
     print("{}".format(angles_1['angle_{}'.format(to_ordinal(n))]), 'is not a vertically opposite angle') 

Nun ist die kurze Version Requisiten einen Fehler eines KeyError.

Kann ich bitte etwas Hilfe bekommen?

+0

dies ein wenig helfen Hat? https://pythonprogramming.net/args-kwargs-intermediate-python-tutorial/ – Colonder

Antwort

1

Sie über Winkel laufen kann und break auf der gegenüberliegenden:

angles_1= {'angle_1': 'abc', 'angle_2': 'acb', 'angle_3': 'cab'} 
shared_vertex = 'c' 

for vertices in angles_1.values(): 
    if vertices[1] == shared_vertex: 
     print(vertices, 'is a vertically opposite angle') 
     break 
else: 
    print('There are no vertically opposite angles') 

Ich benutze else Klausel auf der Schleife, kann man darüber here lesen.


Und eine andere Art und Weise ist eine temporäre dict und .get einen Winkel aus ihm zu machen:

angle = {a[1]: a for a in angles_1.values()}.get(shared_vertex) 

if angle: 
    print(angle, 'is a vertically opposite angle') 
else: 
    print('There are no vertically opposite angles') 
+1

Ändern Sie "Name" in Zeile 6 in Scheitelpunkte, um acb auszugeben –

0

Ich schätze, Sie fehlen paar schließende Klammern für Ihre Diktat und Druckfunktion.

Aktualisiert Code:

loop = 3 
for n in range(loop): 
    def to_ordinal(n:int) -> str: 
     endings = {1: "", 2: "", 3: ""} 
    if shared_vertex == (angles_1['angle_{}'.format(to_ordinal(n))][1]): 
     print("{}".format(angles_1['angle_{}'.format(to_ordinal(n))]), 'is a vertically opposite angle') 
    else: 
     print("{}".format(angles_1['angle_{}'.format(to_ordinal(n))]), 'is not a vertically opposite angle') 
Verwandte Themen