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).
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 |
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()
# ...
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
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])
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