Conseils (entrée / sortie) à connaître lors de la programmation de compétitions avec Python2

Les parties d'entrée et de sortie de conseils à connaître lors de la programmation en Python2 ont été divisées.

Un exemple de la méthode d'entrée / sortie pour la programmation compétitive en Python. Le code d'entrée / sortie est souvent un obstacle lors de l'apprentissage d'une langue pour la première fois, mais une fois que vous vous en souvenez, c'est un modèle, donc je veux m'en souvenir rapidement.

La version Python est ** 2.7.5 ** (En Python3, les spécifications telles que l'entrée et la sortie sont très différentes, il est donc recommandé de se référer à d'autres articles)

référence

Réception de l'entrée standard 1-Qiita

Saisissez une chaîne de caractères par ligne

format

input


S

S est une chaîne de caractères.

contribution

S = raw_input()

Entrez un entier ou un nombre à virgule flottante sur une ligne

format

input


N

N est un nombre entier ou à virgule flottante.

contribution

N = input()

Entrez plusieurs chaînes séparées par des espaces sur une ligne

format

input


A B C

A, B et C sont toutes des chaînes de caractères.

contribution

l = raw_input().split()
print l[0] #La valeur de A est sortie
print l[1] #La valeur de B est sortie
print l[2] #La valeur de C est sortie

split () divise la chaîne en listes séparées par des espaces.

Entrez plusieurs entiers ou nombres à virgule flottante séparés par des espaces sur une ligne

format

input


A B C

A, B et C sont tous des nombres entiers ou flottants.

contribution

Lorsque vous souhaitez affecter toutes les variables à une liste

Si A, B, C sont tous des entiers

l = map(int, raw_input().split())
print l[0] # A
print l[1] # B
print l[2] # C

En bref, l'entrée reçue dans le type chaîne de caractères est divisée par un espace et affectée à la liste, et chaque élément est mappé au type entier.

Le nombre d'éléments peut être donné aux données d'entrée, mais dans le cas de Python cela n'a pas beaucoup d'importance même s'il n'est pas utilisé.

Pour les nombres à virgule flottante

l = map(float, raw_input().split())

Notez que si vous utilisez ʻint` pour les nombres à virgule flottante, la valeur sera tronquée.

Si vous souhaitez stocker chacun dans une variable distincte

A, B, C = map(int, raw_input().split())
print A # A
print B # B
print C # C

Si le nombre d'éléments dans la liste correspond au nombre sur le côté gauche, chaque élément de la liste peut être affecté à chaque variable sur le côté gauche. Il semble que ce type d'affectation s'appelle «affectation non compilée».

Dans le cas d'une programmation concurrentielle, elle ne devrait être utilisée que lorsque le nombre d'éléments d'entrée est clair et petit.

Bien que cela soit rarement vu, si une ligne contient un mélange de chaînes de caractères et d'entiers, prenez une ligne comme chaîne de caractères pour le moment, et convertissez-la plus tard en utilisant ʻint () , float () `, et ainsi de suite.

Entrez un entier pour chacune des plusieurs (N) lignes

format

input


N
a1
a2
a3
...
aN

a1, a2, ..., aN sont N entiers.

contribution

N = input()
a = []
for i in range(N):
    a.append(input())
print a # [a1, a2, a3, ..., aN]

C'est bon.

@ zakuro9715 m'a appris.

Ce code peut également être exprimé comme suit en utilisant la notation d'inclusion de liste. L'entrée de N lignes peut être écrite sur une seule ligne et est magnifique.

N = input()
a = [input() for i in range(N)]
print a # [a1, a2, a3, ..., aN]

Entrez un entier pour chacune des lignes multiples (jusqu'à ce qu'un entier spécifique soit accepté)

Un format souvent vu dans Aizu Online Judge (AOJ).

format

input


a1
a2
a3
...
-1

a1, a2, ..., sont tous des entiers. -1 représente la fin de l'entrée.

contribution

a = []
while True:
    n = input()
    if n == -1:
        break
    a.append(n)
print a # [a1, a2, a3, ..., aN]

Entrez un entier pour chacune des lignes multiples (jusqu'à la fin de l'entrée)

Je vois aussi cela de temps en temps sur AOJ. C'est difficile à déboguer et personnellement je n'aime pas ça.

format

input


a1
a2
a3
...
(EOF)

a1, a2, ..., sont tous des entiers. Lisez jusqu'à l'arrivée d'EOF.

contribution

import sys

a = []
for line in sys.stdin:
    a.append(int(line))
print a # [a1, a2, a3, ...]

Entrez M entiers dans chacune de plusieurs (N) lignes

Un sentiment sommaire jusqu'à présent.

format

input


N M
a11 a12 a13 ... a1M
a21 a22 a23 ... a2M
a31 a32 a33 ... a3M
...
aN1 aN2 aN3 ... aNM

a11, a12, ..., aNM sont des entiers.

contribution

N, M = map(int, raw_input().split())
a = []
for i in range(M):
    a.append(map(int, raw_input().split()))
print a 
# [[a11, a12, a13, ..., a1M]
#  [a21, a22, a23, ..., a2M]
#  ...
#  [aN1, aN2, aN3, ..., aNM]]

Peut-être que ce n'est pas grave si vous gardez cela.

Entrée à usage général utilisant un générateur

J'ai appris de @ t2y.

En utilisant un générateur, il est possible de bien recevoir des entrées sur plusieurs lignes.

Par exemple

format

input


a1
a2
a3
...
(EOF)

a1, a2, ..., sont toutes des chaînes de caractères. Lisez jusqu'à l'arrivée d'EOF.

Si le format est comme

def get_input():
    while True:
        try:
            yield ''.join(raw_input())
        except EOFError:
            break

if __name__ == '__main__':
    a = list(get_input()) # [a1, a2, a3, ...]

Faire.

De plus, le contenu de get_input (),

def get_input():
    while True:
        try:
            s = raw_input()
            if s == '-1':
                break
            yield ''.join(s)
        except EOFError:
            break

En changeant en, il est possible de recevoir une entrée légèrement compliquée telle que "read" -1 "ou jusqu'à la fin de l'entrée".

production

Variable sortie 1 (avec saut de ligne)

format

output


A

Incluez un saut de ligne à la fin.

production

print A

Le type entier et le type de chaîne de caractères peuvent être générés. De plus, le débogage des listes et du dictionnaire peut être effectué tel quel avec l'instruction print.

Variable sortie 1 (pas de rupture de ligne)

Pour être honnête, je ne l'ai pas vu, mais pour le plaisir d'étudier.

format

output


A

N'inclut pas de saut de ligne à la fin.

production

import sys

sys.stdout.write(A)

Sortie de plusieurs variables séparées par des espaces

Je vois souvent cela.

format

output


A B C

Incluez un saut de ligne à la fin.

production

print A, B, C

Dans l'instruction print, si vous mettez , après la variable, le saut de ligne sera converti en un espace demi-largeur.

Astuces Python: Je souhaite afficher une chaîne de caractères sans saut de ligne - Life with Python

Sortie de plusieurs variables séparées par des virgules

format

output


A,B,C

A, B et C sont toutes des chaînes de caractères. Incluez un saut de ligne à la fin.

production

print ','.join([A, B, C])

join () correspond à l'opération inverse de split () et retourne la concaténation de chaque élément de la liste des chaînes d'arguments avec la chaîne de réception.

Notez que tous les éléments de la liste doivent être de type string.

Ici, par exemple, si A, B et C sont des entiers,

print ','.join(map(str, [A, B, C]))

Après avoir converti chaque élément en chaîne de caractères par str (), joignez.

Sortie selon format

Vous souhaiterez peut-être créer une sortie au format libre comme la fonction printf en C ++.

Format (exemple)

output


Case 1: A B

A et B sont des nombres entiers. Incluez un saut de ligne à la fin.

production

print 'Case 1: {0} {1}'.format(A, B)

format () prend un argument de longueur variable et retourne une chaîne contenant la valeur du i-ème argument dans '{i}'.

La plupart des choses que printf peut faire, telles que la conversion de base et l'alignement des chiffres au moment de la sortie, peuvent également être faites avec format (). Pour plus de détails, voir Référence.

Recommended Posts

Conseils (entrée / sortie) à connaître lors de la programmation de compétitions avec Python2
Conseils à savoir lors de la programmation de compétitions avec Python2
Conseils (structure de contrôle) à connaître lors de la programmation de la compétition avec Python2
Conseils (structure de données) à connaître lors de la programmation de compétitions avec Python2
Conseils à connaître lors de la programmation de compétitions avec Python2 (bibliothèque utile)
Conseils à savoir lors de la programmation de la compétition avec Python2 (Autres spécifications du langage)
Programmation compétitive avec python
Entrée standard Python3 pour une programmation compétitive
Conseils sur l'entrée / la sortie de fichier Python
Entrée / sortie avec Python (mémo d'apprentissage Python ⑤)
Connaissance de l'algèbre linéaire que vous devez savoir lorsque vous faites de l'IA
Programmation de compétition avec les paramètres de l'environnement local python
Conseils personnels lorsque vous faites diverses choses avec Python 3
[python] [vscode] Lorsque vous vous fâchez avec space-tab-mixed
Résolution avec Python [100 questions passées que les débutants et les intermédiaires devraient résoudre] (053 --055 Méthode de planification dynamique: Autres)
Vous devez savoir si vous utilisez Python! 10 bibliothèques utiles
Qu'utilisez-vous lorsque vous testez avec Python?
[Python] Construire un environnement pour la programmation de compétition avec Atom (input () peut être utilisé!) [Mac]
Sortie japonaise lors de l'utilisation de python dans Visual Studio
3. 3. Programmation IA avec Python
Programmation Python avec Atom
entrée et sortie python
Entrée / sortie audio Python
Programmation avec Python Flask
Je connais? Analyse de données à l'aide de Python ou de choses que vous souhaitez utiliser quand vous le souhaitez avec numpy
[Astuces] Traiter l'erreur qui se produit lors de la tentative d'installation de la série Python 3 inférieure à 3.5.3 avec pyenv
Utilisez une macro qui s'exécute lors de l'enregistrement de python avec vscode
Programmation avec Python et Tkinter
Essayez la sortie Python avec Haxe 3.2
J'ai essayé d'en savoir le plus possible sur GIL que vous devriez savoir si vous faites un traitement parallèle avec Python
Recevoir des conseils d'entrée standard @ python
[Astuces] Gérez Athena avec Python
Erreur lors de la lecture avec python
Programmation réseau avec Python Scapy
Lorsque vous exécutez diff en python et que vous voulez à la fois le code de retour et la sortie
Comment entrer / sortir des valeurs à partir d'une entrée standard dans la programmation de compétition, etc.
Résoudre avec Python [100 questions que les débutants et les intermédiaires devraient résoudre] (034-038 Méthode de planification dynamique: Knapsack DP basic)
Résolvez avec Python [100 questions passées que les débutants et les intermédiaires devraient résoudre] (039 --045 Méthode de planification dynamique: variante Knapsack DP)