Treten Sie einem Online-Richter mit Python 3.x bei

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.

1 Verwenden Sie Python 3.x?

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.

2 Eingang

1: Eine Sache in einer Zeile

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.

2: Geben Sie mehrere Zeilen ein

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 ()`.

3: Weisen Sie mehrere Werte in einer Zeile zu

Dies ist auch in Online-Richtereingabeformaten üblich. Ich denke, es gibt zwei Muster dieser Art, also schauen wir uns jedes an.

Bei der Zuordnung zu mehreren Variablen

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.

Wenn Sie eine Reihe von Daten wie ein Array behandeln möchten

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.

3 Ausgabe

1: Eine Variable mit Zeilenumbrüchen

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

2: Mehrere Variablen mit Zeilenumbrüchen

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.

3: Ich möchte die Liste in eine Ganzzahl konvertieren und nebeneinander ausgeben

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. joinIst das das Argument kann nur für String-Typen verwendet werden. Dies ist eine ganze ZahlintWas 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.

4: Ich möchte das Format angeben

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. formatFür weitere Informationen suchen oder lesen Sie bitte die Referenz.

abschließend

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

Treten Sie einem Online-Richter mit Python 3.x bei
x86-Compiler selbst erstellt mit Python
Erstellen Sie LCD-Spiele (16x2) mit Raspberry Pi und Python
Schneiden Sie ein Bild mit Python aus
Ich habe eine SMS mit Python gesendet
[Python] Mail mit Outlook senden
[Python] Erstellen einer Umgebung mit Anaconda [Mac]
Hinweise beim Erstellen einer Umgebung mit Python
Erstellen Sie schnell eine Excel-Datei mit Python #python
[Python] Erstellen Sie schnell eine API mit Flask
Scraping von einer authentifizierten Site mit Python
Erstellen Sie eine englische Wort-App mit Python
Senden Sie eine E-Mail mit Amazon SES + Python
PIL mit Python 3.x unter macOS installieren
Leichte Bildverarbeitung mit Python x OpenCV
Lassen Sie uns mit Python 1 einen Investitionsalgorithmus entwickeln
[Blender x Python] Beginnen wir mit Blender Python !!
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
Erstellen Sie eine App, die Schüler mit Python errät
Scraping mit Python
Senden Sie eine E-Mail mit Python an Spushis Adresse
Schreiben wir FizzBuzz mit einem Fehler: Python-Version
[Python] Clustering mit einem unendlich gemischten Gaußschen Modell
Twilio mit Python
So beschneiden Sie ein Bild mit Python + OpenCV
GUI-Automatisierung mit Python x Windows App Driver
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Python beginnt mit ()
Erstellen Sie ein Bild mit Zeichen mit Python (Japanisch)
Fügen Sie Python 2.7.x in pyenv unter Mac OSX 10.15.5 ein
Bingo mit Python
Zundokokiyoshi mit Python
Installieren Sie Shogun mit Python Modular (OS X Yosemite)
Senden Sie eine E-Mail mit Excel in Python
Erstellen Sie schnell einen API-Server mit Python + Falcon
[Blender x Python] Denken Sie an Code mit Symbolen
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
Ich habe versucht, mit Python (Mac OS X) eine Umgebung für maschinelles Lernen zu erstellen.
Code-Server-Online-Umgebung (3) Starten Sie eine EC2-Instanz mit Boto3
Lesehinweis: Einführung in die Datenanalyse mit Python
Erstellen einer Umgebung für die Verarbeitung natürlicher Sprache mit Python
Serielle Kommunikation mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Python lernen mit ChemTHEATER 03