Ruby- und Python-Syntax ~ branch ~

Einführung

Ich lese Artikel wie "Der Typ, der nur Ruby kann, ist ein Dummkopf, der den Algorithmus nicht versteht" (ich habe vergessen, wo ich ihn gelesen habe) Ich höre oft Leute sagen, dass sie nicht gut darin sind, über Algorithmen nachzudenken, während sie mit Paarprofis hacken.

Die ** Algorithmus-Theorie ** (schläfrig), die ich an der Universität gemacht habe, kann zum ersten Mal nützlich sein! Ich dachte, also würde ich es gerne auf verschiedene Arten zerlegen.

Zuerst habe ich versucht, die Syntax zu organisieren, die verwendet werden kann.

Ziel dieses Artikels

・ Die bedingte Verzweigungssyntax kann ordnungsgemäß verwendet werden ・ Verstehen Sie den Unterschied zwischen Ruby- und Python-Code

Wie lautet die Syntax überhaupt?

So schreiben Sie grundlegende Anweisungen für ein Programm.

Das Programm hat nur drei Sätze.

-Sequenzielle Verarbeitung: In der Reihenfolge von oben ausgeführt. Die Basis ist diese Bewegung.
-Zweigverarbeitung: Die Verarbeitung wird abhängig von den Bedingungen geändert. Bewegung wie ein psychologischer Test.
- Wiederholen Sie die Verarbeitung: Wiederholen Sie die gleiche Verarbeitung. Wenn Sie es in Ruhe lassen, wird es auf unbestimmte Zeit fortgesetzt. Kombinieren Sie es also mit einer bestimmten Bedingung.

Diese Schreibregeln sind Syntax!

Variablen, Konstanten, Zuweisungen usw. werden übrigens manchmal als Syntax bezeichnet.

Bedingte Verzweigungssyntax

if Die auszuführende Verarbeitung ändert sich abhängig von den eingestellten Bedingungen. Sie können die Verarbeitung auch einstellen, wenn die Bedingungen nicht erfüllt sind. Hier ist ein Diagramm ↓ スクリーンショット 2020-04-15 21.34.58.png

Sie können auch mehrere Bedingungen festlegen. スクリーンショット 2020-04-15 19.20.31.png

Ruby wenn

Beschreibe mit ** if --elsif ・ ・ ・ else --end **.

if.rb


if a == b 
 puts "a und b sind gleich"
elsif a > b
 puts "a ist groß"
else
 puts "b ist groß"
end

Python wenn

Beschreibe mit ** if --elif ・ ・ ・ else **.

if.py


if a == b: 
 print("a und b sind gleich")
elif a > b:
 print("a ist groß")
else:
 print("b ist groß")

Apropos

Die Implementierung mit if-elsif-else-end ist schneller als das Anordnen mehrerer if-Enden.

unless Der Prozess wird ausgeführt, wenn die festgelegten Bedingungen nicht erfüllt sind. Das Gegenteil von wenn. スクリーンショット 2020-04-15 21.35.03.png

Ruby, es sei denn

unless.rb


unless a = b 
 puts "a und b sind nicht gleich"
end

Sie können else verwenden, aber wenn Sie den Prozess in zwei Teile aufteilen möchten, ist es besser, ** if-else ** zu verwenden. Verwenden Sie den negativen Operator (!), Wenn die Bedingung "wenn nicht" sein soll.

unlessOrIf.rb


unless a == b 
 puts "a und b sind nicht gleich"
else
 puts "a und b sind gleich"
end

#Gleich wie unten
if a != b
 puts "a und b sind nicht gleich"
else
 puts "a und b sind gleich"
end

#Immerhin ist das in Ordnung
if a == b
 puts "a und b sind gleich"
else
 puts "a und b sind nicht gleich"
end

Sie können mit elsif nicht mehrere Bedingungen festlegen. Verwenden Sie die if-Anweisung, wenn es sich um einen komplizierten Zweig handelt.

Dann benutzt du ihn, es sei denn?

  1. Ein Prozess
  2. Wenn der negative Zustand leichter zu verstehen ist

Verwenden Sie es sei denn für.

unless.rb


unless year > 20 
 puts "Ich kann keinen Schnaps kaufen"
end

Python, es sei denn

Nicht! !! Sie können jedoch schreiben, wenn nicht.

ifnot.rb


if not year > 20:
 print("Ich kann keinen Schnaps kaufen")

Es scheint, dass Bedingungen mit den logischen Operatoren von und oder nicht festgelegt werden können. Weitere Informationen hier

case (switch-Anweisung)

Groß- / Kleinschreibung wird empfohlen, wenn Sie abhängig von einem bestimmten Wert mehrere Zweige erstellen möchten. Im Fall von if muss der bedingte Ausdruck für die Anzahl der Zweige beschrieben werden, im Fall ist jedoch nur eine Bedingung erforderlich. (Fall ist einfacher, das Menü abhängig vom Eingabewert des Ruby-Lehrplans "Review App" zu verzweigen!) スクリーンショット 2020-04-15 21.41.37.png

Ruby Fall

case.rb


case a
when 1
 puts "a ist 1"
when 2
 puts "a ist 2"
else
 puts "Nichts"
end

Das Verhalten ist das gleiche wie bei Verwendung von == für die if-Bedingung und Festlegen mehrerer Zweige.

Sie können auch zwei oder mehr zu vergleichende Werte festlegen.

case.rb


case a
when 1,2
 puts "a ist 1 oder 2"
when 3,4
 puts "a ist 3 oder 4"
else
 puts "Nichts"
end

Python-Fall

Nicht! !! !! !! Nach der offiziellen Dokumentation Sie können das auch einfach tun, indem Sie> if ... elif ... elif ... else wiederholen. Es gab einige Vorschläge für die Syntax der switch-Anweisung, aber es besteht (noch) kein Konsens darüber, ob oder wie eine Bereichsprüfung durchgeführt werden soll.

Es scheint, dass Sie es mit if-elif-else schreiben.

Apropos

Es gibt fast keinen Unterschied in der Verarbeitungsgeschwindigkeit zwischen if und case. Der JS-Vergleichsartikel lag ebenfalls im Fehlerbereich.

Zusammenfassung

Ich habe diesmal nachgeforscht und Folgendes festgestellt (was offensichtlich sein kann).

・ Die Syntax, die verwendet werden kann, ist je nach Sprache unterschiedlich
-Die zu verwendende Syntax hängt vom zu implementierenden Prozess ab.

Grundsätzlich handelt es sich um eine if-Anweisung, die nur Brute Force implementiert. Daher habe ich mich für eine andere Syntax entschieden. Es scheint jedoch keine Grundlage für die Verarbeitungsgeschwindigkeit oder die Speichernutzung zu geben. Ist es nur ein Geschmack oder eine Lesbarkeit? Das ist die heutige Schlussfolgerung.

Ich wollte iterativ schreiben ...

Nachtrag

Ich möchte diesmal schreiben. ・ Was ist überhaupt ein Algorithmus? ・ Wie schreibt man ein Flussdiagramm?

Recommended Posts

Ruby- und Python-Syntax ~ branch ~
Python und Ruby teilen sich
Unterschied zwischen Ruby und Python (grundlegende Syntax)
Python und Ruby Slice Memo
Unterschied zwischen Ruby und Python Split
Scraping mit Node, Ruby und Python
Unterschiede zwischen Ruby und Python im Umfang
Unterschiede zwischen Python- und Java-Syntax
mit Syntax (Python)
Mit Ruby (Rails) verschlüsseln und mit Python entschlüsseln
Einfaches Web-Scraping mit Python und Ruby
Syntax zur Steuerung der Python-Syntax
SublimeText2 und SublimeLinter - Syntax prüfen auf Python3--
Sofortige Methodengrammatik für Python und Ruby (Lernen)
Angeben des Bereichs von Ruby- und Python-Arrays
Holen Sie sich den Git-Zweignamen und den Tag-Namen mit Python
Über flache und tiefe Kopien von Python / Ruby
Vergleich von Python und Ruby (Environment / Grammar / Literal Edition)
[Python] Komprimieren und dekomprimieren
Python- und Numpy-Tipps
[Python] Pip und Wheel
Python Iterator und Generator
Python-Pakete und -Module
Vue-Cli- und Python-Integration
Python-Eingabe und Ausgabe
Python-Steuerungssyntax (Denkmal)
Python asyncio und ContextVar
AtCoder ARC080 D Simulation mit Ruby und Python gelöst
[Ruby vs Python] Benchmark-Vergleich zwischen Rails und Flask
Unterschied zwischen Ruby und Python in Bezug auf Variablen
Prozessübergreifende Kommunikation zwischen Ruby und Python (POSIX-Nachrichtenwarteschlange)
[Python] Kapitel 05-01 Steuerungssyntax (Vergleichsoperator und bedingte Verzweigung)
Vergleich von CoffeeScript mit JavaScript-, Python- und Ruby-Grammatik
Versionsverwaltung von Node, Ruby und Python mit anyenv
Lösen mit Ruby und Python AtCoder ARC 059 C Minimum-Quadrat-Methode
Programmieren mit Python und Tkinter
Python: Klassen- und Instanzvariablen
Python 2-Serie und 3-Serie (Anaconda Edition)
Python und Hardware-Verwenden von RS232C mit Python-
Mandelbrot-Benchmark (C, PHP, HHVM, Ruby, Python, PyPy und Kinx)
Python-Einzug und String-Format
Python Real Number Division (/) und Integer Division (//)
Lösen mit Ruby und Python AtCoder ABC178 D Dynamische Planungsmethode
Installieren Sie Python und Flask (Windows 10)
Java VS PHP VS Python VS Ruby
Informationen zu Python-Objekten und -Klassen
Informationen zu Python-Variablen und -Objekten
Apache mod_auth_tkt und Python AuthTkt
Å (Ongustorome) und NFC @ Python
Lösen mit Ruby und Python AtCoder ABC133 D Kumulative Summe
Lernen Sie Python-Pakete und -Module kennen
# 2 [python3] Trennung und Kommentar aus
[Hikari-Python] Kapitel 05-10 Steuerungssyntax (Unterbrechung und Fortsetzung der iterativen Verarbeitung)
Flache Python-Kopie und tiefe Kopie
Python-Installation und grundlegende Grammatik
Standardeingabe / Zusammenfassung / Python, Ruby
Ich habe Java und Python verglichen!
Lösen mit Ruby und Python AtCoder AISING2020 D Iterative Square-Methode