Tipps (Kontrollstruktur), die Sie beim Programmieren von Wettbewerben mit Python2 kennen sollten

Der Teil über die Kontrollstruktur von Tipps zum Programmieren von Wettbewerben mit Python2 wurde geteilt.

Die Python-Version ist 2.7.5 (In Python3 unterscheiden sich Spezifikationen wie Eingabe und Ausgabe erheblich, daher wird empfohlen, auf andere Artikel zu verweisen).

Bedingte Verzweigung

Übergeben Sie Variablen an bedingte Ausdrücke

Persönlich mag ich es nicht sehr, aber um die Menge an Code zu reduzieren

while 1:
    a = input()
    if not a: 
        break
    # ...   

Ich habe das Gefühl, dass Variablen häufig an Bedingungen wie if-Anweisungen und while-Anweisungen übergeben werden.

Ergebnis des Einfügens einer Variablen in die If-Anweisung in Python --LIFE WITH PYTHON

Schimmel Ergebnis
int False wenn 0, True sonst
float 0.False wenn 0, True sonst
str ''(Leere Zeichen)Falsch wenn nicht, sonst wahr
list []Falsch wenn nicht, sonst wahr
tuple ()Falsch wenn nicht, sonst wahr
dict {}Falsch wenn nicht, sonst wahr
set set()Falsch wenn nicht, sonst wahr
None False

Ich möchte den Prozess in der Mitte beenden

In einigen Fällen kann es einfacher sein, die Ausführung des Skripts in der Mitte zu beenden, z. B. wenn ein Symbol für das Ende der Eingabe oder ein Eckfall eingegeben wird. Verwenden Sie in solchen Fällen "quit ()" oder "sys.exit ()".

a = input()
if a == 0:
    quit()
# ...
import sys

a = input()
if a == 0:
    sys.exit()
# ...  

Wiederholung

range () und xrange ()

2. Integrierte Funktionen - Python 2.7ja1-Dokumentation

Wenn Sie eine einfache Iteration wie "do XX n times" in Python implementieren möchten

n = 5

for i in range(n):
  print i
# 0
# 1
# 2
# 3
# 4

Oder

n = 5

for i in xrange(n):
  print i
# 0
# 1
# 2
# 3
# 4

Es ist üblich, so zu schreiben.

Hier geben range (n) undxrange (n)ein Listenobjekt und ein xrange-Objekt zurück, in denen ganze Zahlen von 0 bis n in aufsteigender Reihenfolge angeordnet sind. Das xrange-Objekt ist ein Objekt, das mithilfe der Verzögerungsauswertung abgerufen werden kann, wenn ein Wert benötigt wird. Wenn n sehr groß ist, generiert range (n) eine Liste und dann eine Schleife, die die Speichernutzung erhöht, aberxrange (n)vermeidet dies. In Bezug auf die Geschwindigkeit ist "xrange ()" außer in einigen Fällen schneller. [python - Should you always favor xrange() over range()? - Stack Overflow] (http://stackoverflow.com/questions/135041/should-you-always-favor-xrange-over-range)

Außerdem können im Bereich (x) verschiedene Bereiche unter Verwendung des zweiten und dritten Arguments oder unter Verwendung von "reverse ()" ausgedrückt werden.

# range(start, stop)Also fang an aufzuhören-Gibt eine Liste aller Ganzzahlen bis zu 1 in aufsteigender Reihenfolge zurück
print range(2, 6) # [2, 3, 4, 5]

# range(start, stop, step)Unter den ganzen Zahlen, die durch Erhöhen des Werts bei jedem Schritt von Anfang an erhalten werden, wird gestoppt-Gibt eine Liste von bis zu 1 in aufsteigender Reihenfolge zurück
print range(5, 30, 5) # [5, 10, 15, 20, 25]

# reversed()Sie können die Liste mit umkehren
for i in reversed(range(5)):
    print i
# 4
# 3
# 2
# 1
# 0

Erweitern Sie Variablen in for-Anweisung

In der for-Anweisung

l = [1, 2, 3, 4, 5]
for e in l:
    print e

output


1
2
3
4
5

Sie können jedes Element der Liste wie in erweitern, dies ist jedoch der Fall

l = [(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]
for i, e in l:
    print '#{0}: #{1}'.format(i, e)

output


0: a
1: b
2: c
3: d

Sie können dies auch tun.

enumerate

Wenn Sie die for-Schleife drehen, kann es hilfreich sein, den Index und den Wert der Liste gleichzeitig abzurufen.

enumerate () gibt einen Iterator mit einem Index und seinem Wert für eine Liste von Argumenten zurück.

l = ['a', 'b', 'c', 'd']
for elem in enumerate(l):
    print elem
# (0, 'a')
# (1, 'b')
# (2, 'c')
# (3, 'd')

#Der obige Code entspricht dem folgenden Code
for i in range(len(l)):
    print (i, l[i])

for-else, while-else-Anweisung

In Python können else-Klauseln zu for- und while-Anweisungen hinzugefügt werden. Zu diesem Zeitpunkt wird die else-Klausel nur aufgerufen, wenn sie bis zum Ende der Schleife noch nie intern unterbrochen wurde.

a = [1, 2, 3, 4, 5]
b = [1, 2, 4, 5]
x = 3

def find_val(l, x):
    for i in range(len(l)):
        if l[i] == x:
            print i
            break
    else:
        print 'Not found...'

#Finden auf_val()Äquivalenter Code
def find_val2(l, x):
    flag = False
    for i in range(len(l)):
        if l[i] == x:
            print i
            flag = True
            break
    if not flag:
        print 'Not found...'

find_val(a, x) # 2
find_val(b, x) # Not found...

Es ist sehr einfach und bequem zu schreiben, da es nicht erforderlich ist, ein Flag zu haben, wenn eine Frage wie "Find x. Wenn nicht gefunden, wird 'hoge' ausgegeben" ausgegeben wird. Wenn jedoch mehrere Schleifen vorhanden sind, ist die Sichtbarkeit schlechter, daher ist es besser, sie nicht zu verwenden.

Recommended Posts

Tipps (Kontrollstruktur), die Sie beim Programmieren von Wettbewerben mit Python2 kennen sollten
Tipps (Datenstruktur), die Sie beim Programmieren von Wettbewerben mit Python2 kennen sollten
Tipps (Eingabe / Ausgabe), die Sie beim Programmieren von Wettbewerben mit Python2 kennen sollten
Tipps, die Sie beim Programmieren in Python2 kennen sollten (nützliche Bibliothek)
Kenntnisse, die Sie beim Programmieren von Wettbewerben mit Python2 benötigen
Tipps zum Programmieren von Wettbewerben mit Python2 (Andere Sprachspezifikationen)
Wettbewerbsfähige Programmierung mit Python
Kenntnisse der linearen Algebra, die Sie bei der KI kennen sollten
Wettbewerbsprogrammierung mit Python Lokale Umgebungseinstellungen
Persönliche Tipps, wenn Sie verschiedene Dinge mit Python 3 tun
Vorsichtsmaßnahmen beim Umgang mit Kontrollstrukturen in Python 2.6
[Python] [vscode] Wenn Sie sich über Space-Tab-Mix ärgern
Lösen mit Python [100 frühere Fragen, die Anfänger und Fortgeschrittene lösen sollten] (053 --055 Dynamische Planungsmethode: Andere)
Sie sollten wissen, ob Sie Python verwenden! 10 nützliche Bibliotheken
Was verwenden Sie beim Testen mit Python?
Verzeichnisstruktur beim Schreiben von Tests mit Python 3-Standard unittest
Python-Programmierung mit Atom
Programmieren mit Python Flask
Ich kenne? Datenanalyse mit Python oder Dingen, die Sie mit numpy verwenden möchten, wenn Sie möchten
[Tipps] Behebung des Fehlers, der auftritt, wenn versucht wird, Python 3-Serien unter 3.5.3 mit pyenv zu installieren
Verwenden Sie ein Makro, das beim Speichern von Python mit vscode ausgeführt wird
Programmieren mit Python und Tkinter
[Python-Tutorial] Kontrollstruktur-Tool
[Tipps] Behandle Athena mit Python
Fehler beim Spielen mit Python
Netzwerkprogrammierung mit Python Scapy
Ich werde versuchen, eine Python-Verzeichnisstruktur zu erstellen, die ich später nicht bereuen werde
Was soll ich denn mit der Python-Verzeichnisstruktur machen?
Lösen Sie mit Python [100 frühere Fragen, die Anfänger und Fortgeschrittene lösen sollten] (034-038 Dynamische Planungsmethode: Knapsack DP basic)
Lösen Sie mit Python [100 frühere Fragen, die Anfänger und Fortgeschrittene lösen sollten] (039 - 045 Dynamische Planungsmethode: Knapsack DP-Variante)