Ich denke, dass es Leute gibt, die Wettbewerbsprogramme und Online-Juroren aus verschiedenen Gründen betreiben, z. B. um die Motivation zu behalten, das Programm zu studieren, und umgekehrt nach einem Ort zu suchen, an dem sie das Gelernte in die Praxis umsetzen können. Jetzt, da es so viele Websites gibt, ist es einfach, sie in Ihrem eigenen Tempo und Können zu genießen. Wenn Sie interessiert sind, werde ich als Referenz auf den folgenden Artikel verlinken.
Auch diesmal möchte ich dazu beitragen, die Hürde für die Teilnahme an Online-Richtern (in Bezug auf E / A) zu verringern und als Memorandum zu dienen.
Mir wird wahrscheinlich gesagt, also lehne bitte zuerst ab. Grundsätzlich sollten Online-Juroren die Programmiersprache verwenden, die sie lernen, und sie unterstützen. Meistens verwenden Sie C (++), und wenn Sie die Berechnungsgeschwindigkeit möchten, ist dies besser. Auf der anderen Seite wird es eine bestimmte Anzahl von Leuten geben, die Erfahrung in der Programmierung haben und Python verwenden werden, und in letzter Zeit, wenn man bedenkt, dass es reichlich Bibliotheken einschließlich künstlicher Intelligenz gibt, gibt es auch Leute, die über Python in die Welt des Programmierens eingetreten sind. Ich denke. Wenn solche Leute denken: "Lassen Sie uns verschiedene Dinge mit einem Online-Richter studieren", denke ich, dass Input und Output zunächst schwierig sein werden. Ich kämpfe immer noch.
Natürlich gibt es auch Pioniere, die die folgenden Artikel geschrieben haben.
Ich bin Ihnen auch zu Dank verpflichtet, aber es scheint, dass die Grammatik so alt ist wie 2.x. Also habe ich beschlossen, einen Artikel für 3.x zu schreiben. Ich hoffe es wird für die Teilnehmer hilfreich sein.
input
X
python
var = input()
Dadurch wird der Variablen var
X
zugewiesen. In diesem Fall wird die Variable als Zeichenfolge zugewiesen. Daher sind bei Bedarf Operationen wie "int (input ())" und "float (input ())" erforderlich.
In dem Online-Bewertungssystem kann das Format die Anzahl der Daten in der ersten Zeile und die Eingabedaten in der zweiten und den folgenden Zeilen sein. In diesem Fall ist die Handhabung in Python einfacher, wenn Sie im Listenformat eingeben.
input
5 #Anzahl der Daten N.
1
2
3
4
5
python
n = int(input())
a = [input() for i in range(n)]
Der Wert wird jetzt im Listenformat `` `a``` zugewiesen. Es ist hier jedoch auch im String-Format. Wie wir später in der Ausgabe sehen werden, ist es besser zu prüfen, ob der Typ der Variablen in der Liste nach Bedarf eine Ganzzahl, ein Gleitkomma oder eine Zeichenfolge ist.
In dem oben vorgestellten Artikel ist die Eingabe "raw_input ()", aber dies ist aus der 2.x-Ära und in 3.x ist sie in "input ()" integriert. Es scheint, dass es getan wurde. Von nun an verwenden wir `input ()`
.
Dies ist auch in Online-Richtereingabeformaten üblich. Ich denke, es gibt zwei Muster dieser Art, also schauen wir uns jedes an.
Wenn Sie beispielsweise mehreren Variablen in einem Format wie "a b ..." zuweisen möchten, verwenden Sie "map". Zum Beispiel, wenn Sie 3 Ganzzahlen speichern möchten.
input
#Example array
1 2 3
python
a, b, c = map(int, input().split())
Dies wird "a = 1, b = 2, c = 3" ohne Probleme ersetzen. In dieser Hinsicht
Tipps (Eingabe / Ausgabe), die Sie beim Programmieren in Python kennen sollten
Wenn die Anzahl der Elemente in der Liste mit der Anzahl auf der linken Seite übereinstimmt, kann jedes Element in der Liste jeder Variablen auf der linken Seite zugewiesen werden. Es scheint, dass diese Art der Zuweisung als "entpackte Zuweisung" bezeichnet wird.
Bei wettbewerbsfähiger Programmierung sollte diese nur verwendet werden, wenn die Anzahl der Eingabeelemente klar und gering ist.
Ist geschrieben. Lassen Sie uns das auf diese Weise gut nutzen.
Um es in Python wie ein Array zu behandeln, verwenden wir natürlich eine Liste. Im Gegensatz zur 2.x-Ära hat 3.x jedoch nicht die gleiche Grammatik wie oben. Schauen wir uns das für einen Moment an.
python
a = map(int, input().split())
In der 2.x-Ära schien es gültig zu sein, `input ()`
als `raw_input ()`
zu lesen. Da 3.x jedoch `` map``` als Objekt behandelt wird, tritt ein Fehler auf, wenn Sie versuchen, es wie eine Liste zu behandeln.
Wenn Sie beispielsweise so etwas wie `a = [" 2 "," 1 "," 3 "]`
haben, berücksichtigen Sie die folgende `` `if``` -Anweisung, die Sie sortieren möchten.
error
if int(a[i]) < int(a[j]):
#Einige Verarbeitung
Stellen Sie sich jedoch `` `i, j``` als Zählervariablen vor. Es ist ein Beispiel für das Sortieren ... Dann erhalten Sie wahrscheinlich eine Fehlermeldung wie folgt:
consoleout
TypeError: 'map' object is not subscriptable
Dies ist, ohne Angst vor Missverständnissen, dass `map``` und` `list``` von unterschiedlicher Art sind. Die Lösung für dieses Problem besteht darin,
map``` to
`` list``` einzugeben. Gehen Sie also wie folgt vor:
python
a = list(map(int, input().split()))
Das hat es gelöst.
Sie können `` `print``` normalerweise verwenden. Es wurde oft gesagt, als das System von 2.x auf 3.x geändert wurde, aber vergessen Sie nicht die Klammern.
python
print(a) #Geben Sie den Wert der Variablen a aus
Dies listet nur mehrere Variablen mit `print
`auf.
python
print(a,b,c)
Es wird automatisch mit einem durch ein Zeichen getrennten Einzelbyte-Leerzeichen ausgegeben.
Vielleicht ist dies der Höhepunkt. Wenn Sie sich nicht daran gewöhnen, werden Sie es wahrscheinlich schwer haben.
Dies ist mit `join
`leicht zu verstehen.
Im folgenden Beispiel werden Zahlen von 0 bis 4 getrennt durch Leerzeichen halber Breite ausgegeben.
python
a = [str(i) for i in range(5)] #Wagen Sie es hier"String"Liste 0-4 als
print(" ".join(a)) #Raumbegrenzer halber Breite
# -> 0 1 2 3 4
Sie müssen jedoch in diesem Stadium vorsichtig sein, wie ich zuvor geschrieben habe.
join
Ist das das Argument kann nur für String-Typen verwendet werden. Dies ist eine ganze Zahlint
Was passiert dann?
python
a = [int(i) for i in range(5)] #Ursprünglich nicht erforderlich, aber um dies anzugeben, fügen Sie int zur Liste 0-4 hinzu
print(" ".join(a)) #Ich möchte getrennt durch Leerzeichen mit halber Breite ausgeben
# -> TypeError: sequence item 0: expected str instance, int found
Wird zu einem Fehler führen. Wenn der Typ als "Zeichenfolge" ausgegeben wird, kann abhängig vom Diskriminator ein Laufzeitfehler zurückgegeben werden. Dies ist ein blinder Fleck beim Debuggen in der Konsole. Wenn der Algorithmus und das Ausgabeformat korrekt aussehen, aber nicht funktionieren, sollten Sie sich dessen ebenfalls bewusst sein.
(Hinzugefügt am 28. Mai 2017) Aus @ shiracamus 'Kommentar
Wenn Sie str, int, was auch immer, durch Leerzeichen halber Breite getrennt ausgeben möchten, können Sie wie folgt schreiben.
a = [1, 'abc', 2.34, 5+6j] print(*a) #-> 1 abc 2.34 (5+6j)
Ich finde es klug, weil man nicht wie im Text über den Typ nachdenken muss. Es war hilfreich, danke.
Ab Python 3.x wird das Format `` `format``` gegenüber der C-ähnlichen% -Notation empfohlen. Sie haben es im Python-System vielleicht nicht so oft bemerkt, aber es ist effektiv, wenn der Richter, der den Berechnungsfehler zulässt, unter einem bestimmten Niveau liegt oder wenn die Ausgabe angegeben wird. Oder besser gesagt, es würde sonst nicht akzeptiert werden.
python
a = 10
b = 1.234567
print("Example: a={:05d}, b={:.3f}".format(a,b))
#-> Example: a=00010, b=1.235
Wenn Sie den Doppelpunkt in {} vergessen, werden Sie wütend. Seien wir vorsichtig.
format
Für weitere Informationen suchen oder lesen Sie bitte die Referenz.
Ich habe es kurz geschrieben, aber ich denke, wenn Sie so viel wissen, wird es in Kombination nützlich sein. Bitte kommentieren Sie, wenn etwas fehlt. Hab ein gutes Programmierleben!
Recommended Posts