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).
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.
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.
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 ()
`.
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.
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,
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.
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.
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
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.
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.
join
Est-ce que l'argument ne peut être utilisé que pour les types chaîne. Ceci est un entierint
Que 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.
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.
format
Pour plus d'informations, veuillez rechercher ou lire la référence.
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