Syntaxe Ruby et Python ~ branch ~

introduction

J'ai lu des articles comme "Le gars qui ne peut que faire Ruby est un imbécile qui ne comprend pas l'algorithme" (j'ai oublié où je l'ai lu) J'entends souvent les gens dire qu'ils ne sont pas doués pour penser aux algorithmes lors du piratage avec des pros de la paire.

La ** théorie de l'algorithme ** (somnolente) que j'ai suivie à l'université peut être utile pour la première fois! J'ai pensé, alors je voudrais le démonter de différentes manières.

Tout d'abord, j'ai essayé d'organiser la syntaxe qui peut être utilisée.

Objectif de cet article

・ La syntaxe de branchement conditionnel peut être utilisée correctement ・ Comprendre la différence entre le code Ruby et Python

Quelle est la syntaxe en premier lieu?

Comment rédiger des instructions de base pour un programme.

Le programme ne comporte que trois mouvements.

-Traitement séquentiel: exécuté dans l'ordre du haut. La base est ce mouvement.
-Traitement de la branche: Le traitement est modifié en fonction des conditions. Mouvement comme un test psychologique.
-Répéter le traitement: Répéter le même traitement. Si vous le laissez seul, cela continuera indéfiniment, alors combinez-le avec une condition.

Ces règles d'écriture sont de la syntaxe!

À propos, les variables, les constantes, les affectations, etc. sont parfois appelées syntaxe.

Syntaxe de branche conditionnelle

if Le traitement à exécuter change en fonction des conditions définies. Vous pouvez également définir le traitement lorsque les conditions ne sont pas remplies. Voici un diagramme ↓ スクリーンショット 2020-04-15 21.34.58.png

Vous pouvez également définir plusieurs conditions. スクリーンショット 2020-04-15 19.20.31.png

Rubis si

Décrivez avec ** if --elsif ・ ・ ・ else --end **.

if.rb


if a == b 
 puts "a et b sont égaux"
elsif a > b
 puts "a est grand"
else
 puts "b est grand"
end

Python si

Décrivez avec ** if --elif ・ ・ ・ else **.

if.py


if a == b: 
 print("a et b sont égaux")
elif a > b:
 print("a est grand")
else:
 print("b est grand")

Au fait

Il est plus rapide de mettre en œuvre avec if-elsif-else-end que d'organiser plusieurs if-ends.

unless Le processus est exécuté lorsque les conditions définies ne sont pas remplies. Le contraire de if. スクリーンショット 2020-04-15 21.35.03.png

Rubis sauf

unless.rb


unless a = b 
 puts "a et b ne sont pas égaux"
end

Vous pouvez utiliser else, mais si vous souhaitez diviser le processus en deux, il est préférable d'utiliser ** if-else **. Utilisez l'opérateur négatif (!) Si vous voulez que la condition soit "quand non".

unlessOrIf.rb


unless a == b 
 puts "a et b ne sont pas égaux"
else
 puts "a et b sont égaux"
end

#Identique à ci-dessous
if a != b
 puts "a et b ne sont pas égaux"
else
 puts "a et b sont égaux"
end

#Après tout c'est bien
if a == b
 puts "a et b sont égaux"
else
 puts "a et b ne sont pas égaux"
end

Vous ne pouvez pas définir plusieurs conditions avec elsif. Utilisez l'instruction if lorsqu'elle devient une branche compliquée.

Alors l'utilisez-vous à moins?

  1. Un processus
  2. Lorsque la condition négative est plus facile à comprendre

À utiliser sauf pour.

unless.rb


unless year > 20 
 puts "Je ne peux pas acheter d'alcool"
end

Python sauf si

Ne pas! !! Cependant, vous pouvez écrire sinon.

ifnot.rb


if not year > 20:
 print("Je ne peux pas acheter d'alcool")

Il semble que les conditions puissent être définies à l'aide des opérateurs logiques de et, ou, non. Pour plus d'informations ici

case (instruction switch)

La casse est recommandée lorsque vous souhaitez créer plusieurs branches en fonction d'une valeur. Dans le cas de if, l'expression conditionnelle doit être décrite pour le nombre de branches, mais dans le cas, une seule condition est requise. (Case est plus simple de ramener le menu en fonction de la valeur d'entrée du programme Ruby "Review App"!) スクリーンショット 2020-04-15 21.41.37.png

Étui rubis

case.rb


case a
when 1
 puts "a vaut 1"
when 2
 puts "a vaut 2"
else
 puts "Rien"
end

Le comportement est le même que lors de l'utilisation de == pour la condition if et de la définition de plusieurs branches.

Vous pouvez également définir deux valeurs ou plus à comparer.

case.rb


case a
when 1,2
 puts "a vaut 1 ou 2"
when 3,4
 puts "a vaut 3 ou 4"
else
 puts "Rien"
end

Cas Python

Ne pas! !! !! !! Selon la documentation officielle Vous pouvez facilement faire de même en répétant> if ... elif ... elif ... else. Il y a eu quelques suggestions pour la syntaxe de l'instruction switch, mais il n'y a (encore) pas d'accord sur l'opportunité ou la manière de faire une vérification de plage.

Il semble que vous l'écrivez avec if-elif-else.

Au fait

Il n'y a presque aucune différence de vitesse de traitement entre if et case. L'article de comparaison JS était également dans la plage d'erreur.

Résumé

J'ai enquêté cette fois et j'ai trouvé ce qui suit (ce qui peut être évident).

・ La syntaxe qui peut être utilisée diffère selon la langue
-La syntaxe à utiliser diffère selon le processus que vous souhaitez implémenter.

Fondamentalement, il s'agit d'une instruction if et n'implémente que la force brute, j'ai donc décidé d'utiliser également une autre syntaxe. Cependant, il semble n'y avoir aucune base pour la vitesse de traitement ou l'utilisation de la mémoire. Est-ce juste un goût ou une lisibilité? Telle est la conclusion d'aujourd'hui.

Je voulais écrire de manière itérative ...

Postscript

Je veux écrire cette fois. ・ Qu'est-ce qu'un algorithme en premier lieu? ・ Comment rédigez-vous un organigramme?

Recommended Posts

Syntaxe Ruby et Python ~ branch ~
Python et Ruby se séparent
Différence entre Ruby et Python (syntaxe de base)
Mémo tranche python et rubis
Différence entre Ruby et Python Split
Scraping avec Node, Ruby et Python
Différences entre Ruby et Python dans la portée
Différences entre la syntaxe Python et Java
avec syntaxe (Python)
Crypter avec Ruby (Rails) et décrypter avec Python
Scraping Web facile avec Python et Ruby
Syntaxe de contrôle de la syntaxe Python
SublimeText2 et SublimeLinter - Vérification de la syntaxe pour Python3 -
Grammaire de méthode instantanée pour Python et Ruby (étude)
Spécification de la plage des tableaux ruby et python
Obtenez le nom de la branche git et le nom de la balise avec python
À propos des copies superficielles et profondes de Python / Ruby
Comparaison de Python et Ruby (Environment / Grammar / Literal Edition)
[python] Compresser et décompresser
Astuces Python et Numpy
[Python] pip et roue
Itérateur et générateur Python
Paquets et modules Python
Intégration Vue-Cli et Python
entrée et sortie python
Syntaxe de contrôle Python (mémoire)
Python asyncio et ContextVar
Simulation AtCoder ARC080 D résolue avec Ruby et Python
[Ruby vs Python] Comparaison de référence entre Rails et Flask
Différence entre Ruby et Python en termes de variables
Communication inter-processus entre Ruby et Python (file d'attente de messages POSIX)
[Python] Chapitre 05-01 Syntaxe de contrôle (opérateur de comparaison et branchement conditionnel)
Comparaison de CoffeeScript avec la grammaire JavaScript, Python et Ruby
Gestion des versions de Node, Ruby et Python avec anyenv
Résolution avec Ruby et Python AtCoder ARC 059 C Méthode du carré minimum
Programmation avec Python et Tkinter
Python: variables de classe et d'instance
Série Python 2 et série 3 (édition Anaconda)
Python et matériel - Utilisation de RS232C avec Python -
Mandelbrot Benchmark (C, PHP, HHVM, Ruby, Python, PyPy et Kinx)
Indentation Python et format de chaîne
division des nombres réels python (/) et division des nombres entiers (//)
Résolution avec Ruby et Python AtCoder ABC178 D Méthode de planification dynamique
Installez Python et Flask (Windows 10)
Java VS PHP VS Python VS Ruby
À propos des objets et des classes Python
À propos des variables et des objets Python
Apache mod_auth_tkt et Python AuthTkt
Å (Ongustorome) et NFC @ Python
Résolution avec Ruby et Python AtCoder ABC133 D Somme cumulée
Apprenez à connaître les packages et les modules Python
# 2 [python3] Séparation et commentaire
[Hikari-Python] Chapitre 05-10 Syntaxe de contrôle (interruption et poursuite du traitement itératif)
Copie superficielle Python et copie profonde
Installation de Python et grammaire de base
Entrée standard / résumé / python, ruby
J'ai comparé Java et Python!
Résolution avec Ruby et Python AtCoder AISING2020 D Méthode carrée itérative