[Avec commentaire] Résoudre Fizz Buzz (équivalent au rang C de paiza) avec Python

en premier

J'étais en train de résoudre la collection de problèmes de niveau supérieur de Paiza, mais je n'avais pas de réponse modèle, alors je l'ai fait moi-même avec des explications. Le langage est Python3.

problème

Exemple de problème de contrôle des compétences de Paiza Fizz Buzz (équivalent au rang C de Paiza) https://paiza.jp/works/mondai/skillcheck_sample/fizz-buzz?language_uid=python3 Vous pouvez enregistrer paiza gratuitement immédiatement, je vous recommande donc de vous inscrire pour le moment.

Programmons le problème suivant!

L'entier N est donné en entrée.

Afficher les entiers de 1 à N dans l'ordre de 1.

Cependant, le numéro que vous essayez d'afficher est

・ Quand c'est un multiple de 3 et un multiple de 5, "Fizz Buzz" ・ Quand c'est un multiple de 3, "Fizz" ・ Quand c'est un multiple de 5, "Buzz"

Veuillez afficher >> au lieu du numéro.

Valeur à saisir

L'entrée est donnée dans le format suivant.

N

N est un entier supérieur ou égal à 1 et inférieur ou égal à N.

Valeur d'entrée Un saut de ligne est inséré à la fin de la dernière ligne. La chaîne est transmise à partir de l'entrée standard.

Sortie attendue

À la fin, commencez une nouvelle ligne et n'incluez pas de caractères supplémentaires ou de lignes vides.

Conditions

Dans tous les cas de test, les conditions suivantes sont remplies.

・ 1 ≤ N ≤ 100 ・ N est un entier

Exemple d'entrée 1

5

Exemple de sortie 1

1 2 Fizz 4 Buzz

Exemple d'entrée 2

20

Exemple de sortie 2

1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 Fizz Buzz 16 17 Fizz 19 Buzz

Commentaire

Recevoir la valeur d'entrée

La valeur d'entrée est une valeur entière comprise entre 0 et 100. Après avoir reçu la valeur d'entrée à l'aide de la fonction d'entrée, ** conversion de type ** du type str en type int à l'aide de la fonction int.

fizz-buzz_1.py


n = int(input())

Afficher les nombres dans l'ordre

Recherchez ensuite les nombres que vous devriez afficher à la place. Cette fois, nous utiliserons la ** fonction range ** car nous n'avons besoin de rechercher que les entiers de 1 à n dans l'ordre. À ce stade, vous devez faire attention à la manière de spécifier la ** plage ** de la fonction de plage.

Si vous entrez deux arguments avec la fonction range, le premier argument sera ~~ begin ~~ start et le second argument sera ~~ end ~~ stop. À ce stade, l'argument d'arrêt ~~ end ~~ n'inclut pas le nombre lui-même et spécifie de sortir l'entier précédent.

En d'autres termes, la sortie de «range (1, 5)» est 1,2,3,4 et ** 5 n'est pas inclus. ** ** Si vous voulez sortir 1,2,3,4,5, vous devez spécifier range (1, 5 + 1).

range_sample.py


print(list(range(1,5)))    # [1,2,3,4]
print(list(range(1,6)))    # [1,2,3,4,5]

Dans ce cas, nous voulons une valeur entière de 1 à n, alors passez ** 1, n + 1 ** comme argument à la fonction de plage. Lorsqu'il est combiné avec l'instruction for, cela ressemble à ceci.

fizz-buzz_2.py


n = int(input())
for i in range(1, n+1):
    print(i)
    
"""
n =À 5,
1
2
3
4
5
"""

Trouver FizzBuzz

Ensuite, déterminez les nombres à convertir en fizzBuzz. Pour cela, utilisez% (un opérateur algébrique pour trouver le reste).

Si n est divisé par 3 et que le reste est égal à zéro, alors n est un multiple de 3. Si le reste de n divisé par 5 est égal à zéro, alors n est un multiple de 5. Si le reste de n divisé par 15 est égal à zéro, alors n est un multiple de 3 et un multiple de 5.

Un multiple de 3 et un multiple de 5 signifie un multiple de ** 15.

Cette fois, l'instruction if-elif est utilisée pour le jugement.

À ce stade, il est nécessaire de prêter attention à la ** ordonnance de jugement **. Pour déterminer si ~~ n est un multiple de 3 ou 5, Si vous l'écrivez avant de juger s'il s'agit d'un multiple de 15, cela ne fonctionnera pas. ~~ Pour déterminer si> n est un multiple de 3 ou 5, Si vous l'écrivez avant de juger s'il s'agit d'un multiple de> 15, vous devez en imaginer un peu.

Il existe une méthode signalée par @shiracamus, veuillez la vérifier dans la section commentaires ci-dessous. Cette fois, je voudrais le résoudre selon l'ordre du jugement.

if_sample.py


#Mauvais code
n = 15
if n%3 == 0:
    print("n est un multiple de 3.")
elif n%5 == 0:
    print("n est un multiple de 5.")
elif n%15 == 0:
    print("n est un multiple de 3 et un multiple de 5.")
else:
    print("n n'est ni un multiple de 3 ni un multiple de 5.")
    
#n est un multiple de 3.

Si n est un multiple de 15, il sera déterminé comme étant un multiple de 3 ou 5 au lieu d'un multiple de 15. Gardez à l'esprit qu'il sera traité dans l'ordre du haut.

Alors, tout d'abord, déterminez s'il s'agit d'un multiple de 15. Après cela, cela fonctionne bien pour déterminer s'il s'agit d'un multiple de 5 ou d'un multiple de 3.

fizz-buzz_3.py


n = 15
if n%15 == 0:
    print("n est un multiple de 3 et un multiple de 5.")
elif n%5 == 0:
    print("n est un multiple de 5.")
elif n%3 == 0:
    print("n est un multiple de 3.")
else:
    print("n n'est ni un multiple de 3 ni un multiple de 5.")
    
#n est un multiple de 3 et un multiple de 5.

En général, lors de l'écriture d'une instruction if-elif, il semble que cela fonctionne souvent bien si les conditions plus étroites sont écrites en premier.

Code de réponse

fizz-buzz.py


n = int(input())
for i in range(1, n+1):
    if i%15==0:
        print("Fizz Buzz")
    elif i%5==0:
        print("Buzz")
    elif i%3==0:
        print("Fizz")
    else:
        print(i)

référence

https://qiita.com/KoyanagiHitoshi/items/3286fbc65d56dd67737c

finalement

Je vais vous expliquer en détail où j'ai été pris dans le passé. Cela a peut-être été détourné et difficile à comprendre, mais N'hésitez pas à commenter si vous avez des inquiétudes.

Recommended Posts

[Avec commentaire] Résoudre Fizz Buzz (équivalent au rang C de paiza) avec Python
Résoudre Fizz Buzz (équivalent au rang C de paiza) en Python
Résoudre le nombre de mots (équivalent au rang C de paiza) en Python
Résoudre l'addition (équivalent au rang D de paiza) en Python
Résoudre la multiplication (équivalent au rang D de paiza) en Python
Résoudre le tri des nombres (équivalent au rang D de paiza) en Python
Résoudre la recherche d'île (équivalent au rang S de paiza) avec Python
Résoudre les correspondances de caractères (équivalent au rang D de paiza) en Python
Résolvez la divination mod7 (équivalent au rang S de Paiza) en Python
Résolvez la plus petite valeur en Python (équivalent au rang D de paiza)
Défiez Fizz Buzz! Problèmes avec Python en 5 modèles (seulement pour l'instant, nombres jusqu'à 398)
Fizz Buzz en Python
Fizz Buzz en Python
Résoudre ABC163 A ~ C avec Python
Essayons Fizz Buzz avec Python
J'ai écrit Fizz Buzz en Python
Résoudre ABC168 A ~ C avec Python
Résoudre ABC036 A ~ C avec Python
Comment envelopper C en Python
Résoudre ABC162 A ~ C avec Python
Résoudre ABC167 A ~ C avec Python
Résoudre ABC158 A ~ C avec Python
Résoudre ABC037 A ~ C avec Python
Je veux résoudre APG4b avec Python (seulement 4.01 et 4.04 au chapitre 4)
Résoudre ABC175 A, B, C avec Python
Je voulais résoudre ABC160 avec Python
Comment utiliser BigQuery en Python
Je voulais résoudre ABC159 avec Python
Pour faire fonctionner la station d'horodatage en Python
Je voulais résoudre ABC172 avec Python
Comment utiliser la bibliothèque C en Python
Résolution avec Ruby, Perl, Java et Python AtCoder ARC 086 C Hash Sorting
[REAPER] Comment jouer à Reascript avec Python
Comment générer une séquence en Python et C ++
Je voulais résoudre NOMURA Contest 2020 avec Python
Convertissez des PDF en images en masse avec Python
Essayez de résoudre le diagramme homme-machine avec Python
Connectez-vous à Yahoo Business avec Selenium Python
Comment utiliser tkinter avec python dans pyenv
Je veux résoudre APG4b avec Python (chapitre 2)
Tapez des notes sur les scripts Python pour exécuter le modèle PyTorch en C ++ avec libtorch
[Pour les professionnels de la compétition débutants] J'ai essayé de résoudre 40 questions AOJ "ITP I" avec python
Comment convertir / restaurer une chaîne avec [] en python
Essayez de résoudre le livre des défis de programmation avec python3
Essayez de créer un module Python en langage C
Comment faire un calcul de hachage avec Salt en Python
Essayez de résoudre le problème d'affectation du médecin de formation avec Python
Comment exécuter des tests avec Python unittest
J'ai essayé de résoudre Soma Cube avec python
Essayez d'incorporer Python dans un programme C ++ avec pybind11
Convertissez l'image au format .zip en PDF avec Python
Super Primer to python - Premiers pas avec python3.5 en 3 minutes
J'étais accro au grattage avec Selenium (+ Python) en 2020
Je veux travailler avec un robot en python.
J'ai essayé de résoudre le problème avec Python Vol.1
Résoudre Atcoder ABC176 (A, B, C, E) en Python
Pour faire l'équivalent de Ruby ObjectSpace._id2ref en Python
J'ai essayé de résoudre la théorie des nombres entiers d'AOJ avec Python
Résoudre ABC168D en Python
Résolvez ABC167-D avec Python
Résolvez AtCoder 167 avec python