Rejoignez un juge en ligne avec Python 3.x

Je pense qu'il y a des gens qui font des programmes de concours et des juges en ligne pour diverses raisons, comme garder la motivation pour étudier le programme et inversement chercher un endroit pour mettre en pratique ce qu'ils ont appris. Maintenant qu'il y a tellement de sites, il est facile d'en profiter à votre rythme et vos capacités. Si vous êtes intéressé, je ferai un lien vers l'article suivant pour référence.

Cette fois, je voudrais servir de mémorandum et en même temps aider à réduire les obstacles à la participation aux juges en ligne (en termes d'E / S).

1 Utilisez-vous Python 3.x?

On me le dira probablement, alors veuillez d'abord refuser. Fondamentalement, les juges en ligne devraient utiliser le langage de programmation qu'ils apprennent et le soutenir. La plupart du temps, vous utiliserez C (++), et si vous voulez la vitesse de calcul, c'est mieux. En revanche, il y aura un certain nombre de personnes ayant de l'expérience en programmation qui utiliseront Python, et récemment, étant donné qu'il existe de nombreuses bibliothèques dont l'intelligence artificielle, il y a aussi des personnes qui sont entrées dans le monde de la programmation via Python. Je pense. Quand de telles personnes pensent: «Étudions diverses choses avec un juge en ligne», je pense que l'entrée et la sortie seront difficiles au début. J'ai encore du mal.

Bien sûr, il y a aussi des pionniers qui ont écrit les articles suivants.

Je vous suis également redevable, mais il semble que la grammaire soit aussi ancienne que 2.x. J'ai donc décidé d'écrire un article pour 3.x. J'espère que cela sera utile pour les participants.

2 entrées

1: une chose en une ligne

input


X

python


var = input()

Cela affectera X '' à la variable var ''. Dans ce cas, la variable est affectée sous forme de chaîne de caractères, donc si nécessaire, des opérations telles que «int (input ())» et «float (input ())» sont nécessaires.

2: Entrez plusieurs lignes

Dans le système de jugement en ligne, le format peut être le nombre de données dans la première ligne et les données d'entrée dans la deuxième ligne et les suivantes. Dans ce cas, il sera plus facile à gérer en Python si vous saisissez au format liste.

input


5 #Nombre de données N
1
2
3
4
5

python


n = int(input())
a = [input() for i in range(n)]

La valeur est maintenant affectée à a au format liste. Cependant, il est également au format chaîne ici. Comme nous le verrons plus tard dans la sortie, il est préférable de déterminer si le type de la variable dans la liste est un entier, une virgule flottante ou une chaîne de caractères selon les besoins.

Dans l'article présenté ci-dessus, l'entrée est `raw_input ()` `, mais elle date de l'ère 2.x, et dans 3.x elle est intégrée dans` `ʻinput ()` `. Il semble que cela ait été fait. A partir de maintenant, utilisons ```input () `.

3: attribuer plusieurs valeurs sur une seule ligne

Ceci est également courant dans les formats d'entrée des juges en ligne. Je pense qu'il existe deux modèles de ce genre, alors regardons chacun d'eux.

Lors de l'affectation à plusieurs variables

Par exemple, si vous souhaitez attribuer plusieurs variables dans un format tel que a b ... `` `, utilisez` `` map. Par exemple, si vous souhaitez stocker 3 entiers.

input


#Example array
1 2 3

python


a, b, c = map(int, input().split())

Cela remplacera a = 1, b = 2, c = 3 sans aucun problème. À cet égard,

Dans conseils (entrée / sortie) que vous devez savoir lors de la programmation de la compétition avec Python

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 déballée".

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

Est écrit. Faisons un bon usage de cette façon.

Lorsque vous souhaitez gérer une série de données comme un tableau

Bien sûr, pour le traiter comme un tableau en Python, nous utilisons une liste. Cependant, contrairement à l'ère 2.x, 3.x n'a pas la même grammaire que juste au-dessus. Jetons un coup d'œil à cela pendant un moment.

python


a = map(int, input().split())

A l'ère 2.x, il semble qu'il était valide de lire ```input () `comme` raw_input () `. Cependant, depuis 3.x, map '' est traité comme un objet, donc si vous essayez de le traiter comme une liste, une erreur se produira.

Par exemple, a = ["2", "1", "3"] `` `, et que vous voulez trier, considérez l'instruction` `ʻif suivante.

error


if int(a[i]) < int(a[j]):
    #Certains traitements

Cependant, pensez à «i, j» »comme des variables de compteur. C'est un exemple de tri ... Ensuite, vous obtiendrez probablement une erreur comme celle-ci:

consoleout


TypeError: 'map' object is not subscriptable

C'est, sans crainte de malentendu, que la carte '' et la liste '' sont de types différents. La solution à ce problème est de taper carte '' à liste ''. Autrement dit, procédez comme suit:

python


a = list(map(int, input().split()))

Cela l'a résolu.

3 sorties

1: une variable avec sauts de ligne

Vous pouvez utiliser `` imprimer '' normalement. Cela a été dit à maintes reprises lorsque le système est passé de 2.x à 3.x, mais n'oubliez pas les parenthèses.

python


print(a) #Sortie de la valeur de la variable a

2: plusieurs variables avec sauts de ligne

Cela répertorie simplement plusieurs variables avec print` ''.

python


print(a,b,c)

Il est automatiquement émis avec un espace d'un octet séparé par un caractère.

3: Je veux convertir la liste en un entier et la sortir côte à côte

Ce sera peut-être le point culminant. Si vous ne vous y habituez pas, vous aurez probablement du mal. Ceci est facile à comprendre en utilisant join '' '. Dans l'exemple suivant, les nombres de 0 à 4 sont sortis séparés par des espaces demi-largeur.

python


a = [str(i) for i in range(5)] #Osez ici"Chaîne"Liste 0-4 comme
print(" ".join(a)) #Délimiteur d'espace demi-largeur
# -> 0 1 2 3 4

Cependant, vous devez être prudent à ce stade comme je l'ai écrit plus tôt. joinEst-ce que l'argument ne peut être utilisé que pour les types chaîne. Ceci est un entierintQue se passe-t-il alors?

python


a = [int(i) for i in range(5)] #Initialement inutile, mais à spécifier, ajoutez int à la liste 0-4
print(" ".join(a)) #Je veux sortir séparés par des espaces demi-largeur
# -> TypeError: sequence item 0: expected str instance, int found

Entraînera une erreur. De plus, si le type est sorti sous forme de "chaîne de caractères", une erreur d'exécution peut être renvoyée en fonction du discriminateur. Il s'agit d'un angle mort lors du débogage dans la console. Si l'algorithme ou le format de sortie semble correct mais ne fonctionne pas, vous devez également en être conscient.

(Ajouté le 28 mai 2017) D'après le commentaire de @ shiracamus

Si vous voulez afficher str, int, peu importe, séparés par des espaces demi-largeur, vous pouvez écrire comme suit.

a = [1, 'abc', 2.34, 5+6j]
print(*a)
#-> 1 abc 2.34 (5+6j)

Je pense que c'est intelligent parce que vous n'avez pas à penser au type comme dans le texte. Cela a été utile, merci.

4: je souhaite spécifier le format

Depuis Python 3.x, le format `` format '' est recommandé par rapport à la notation% C-like. Vous ne l'avez peut-être pas tellement remarqué dans le système Python, mais il sera efficace lorsque le juge qui autorise l'erreur de calcul en dessous d'un certain niveau ou lorsque la sortie est spécifiée. Ou plutôt, cela ne serait pas accepté autrement.

python


a = 10
b = 1.234567
print("Example: a={:05d}, b={:.3f}".format(a,b))
#-> Example: a=00010, b=1.235

Si vous oubliez les deux points dans {}, vous vous fâcherez. Soyons prudents. formatPour plus d'informations, veuillez rechercher ou lire la référence.

en conclusion

Je l'ai écrit brièvement, mais je pense que si vous en savez beaucoup, ce sera utile en combinaison. Veuillez commenter si quelque chose manque. Bonne vie de programmation!

Recommended Posts

Rejoignez un juge en ligne avec Python 3.x
compilateur x86 réalisé avec python
Créez des jeux LCD (16x2) avec Raspberry Pi et Python
Découpez une image avec python
J'ai envoyé un SMS avec Python
[Python] Envoyez des e-mails avec Outlook
[Python] Création d'un environnement avec Anaconda [Mac]
Remarques lors de la création d'un environnement avec python
Créez rapidement un fichier Excel avec Python #python
[Python] Créez rapidement une API avec Flask
Scraping depuis un site authentifié avec python
Créez une application de mots anglais avec python
Envoyer un e-mail avec Amazon SES + Python
Installation de PIL avec Python 3.x sur macOS
Traitement d'image léger avec Python x OpenCV
Développons un algorithme d'investissement avec Python 1
[Blender x Python] Commençons avec Blender Python !!
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
Créez une application qui devine les étudiants avec Python
Grattage avec Python
Envoyez un email à l'adresse de Spushi avec python
Écrivons FizzBuzz avec une erreur: Version Python
[Python] Clustering avec un modèle gaussien infiniment mélangé
Twilio avec Python
Comment recadrer une image avec Python + OpenCV
Automatisation de l'interface graphique avec le pilote d'application Python x Windows
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
python commence par ()
Créer une image avec des caractères avec python (japonais)
Mettez Python 2.7.x dans pyenv sur Mac OSX 10.15.5
Bingo avec python
Zundokokiyoshi avec python
Installer shogun avec python modulaire (OS X Yosemite)
Envoyer un e-mail avec Excel en pièce jointe en Python
Créez rapidement un serveur API avec Python + Falcon
[Blender x Python] Pensez au code avec des symboles
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
J'ai essayé de créer un environnement d'apprentissage automatique avec Python (Mac OS X)
environnement en ligne de serveur de code (3) Lancer une instance EC2 avec Boto3
Note de lecture: Introduction à l'analyse de données avec Python
Créer un environnement pour le traitement du langage naturel avec Python
Communication série avec Python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Python avec eclipse + PyDev.
Communication de socket avec Python
Analyse de données avec python 2
Grattage en Python (préparation)
Essayez de gratter avec Python.
Apprendre Python avec ChemTHEATER 03