Résolution avec Ruby AtCoder 1er test pratique de l'algorithme Une gestion des exceptions

introduction

Ce thème

Ce thème, la gestion des exceptions

Si vous êtes fidèle aux bases, vous répondrez par «expression régulière», mais j'aimerais répondre par «gestion des exceptions» pour mieux comprendre *** Ruby ***.

Expression régulière Ruby

Motif si les trois lettres sont des chiffres

ruby1.rb


s = gets.chomp
puts (/[0-9]{3}/ === s ? s.to_i * 2 : 'error')

s = gets.chomp
puts (s.match(/[0-9]{3}/) ? s.to_i * 2 : 'error')

Motif si même un caractère est en lettres minuscules

ruby2.rb


s = gets.chomp
puts (/[a-z]/ === s ? 'error' : s.to_i * 2)

s = gets.chomp
puts (s.match(/[a-z]/) ? 'error' : s.to_i * 2)

Motif si même un caractère n'est pas un nombre

ruby3.rb


s = gets.chomp
puts (/[^0-9]/ === s ? 'error' : s.to_i * 2)

s = gets.chomp
puts (s.match(/[^0-9]/) ? 'error' : s.to_i * 2)

Ruby to_i (WA) Motif avec to_i appliqué directement

ruby4.rb


s = 'abc'
puts s.to_i # => 0
s = '42A'
puts s.to_i # => 42

Ruby Rational (AC) Modèle avec Rational appliqué

ruby5.rb


s = gets.chomp
begin
  Rational(s)
rescue
  puts 'error'
else
  puts s.to_i * 2
end

La structure de contrôle pour la gestion des exceptions est la suivante.

rescue.rb


begin
  #Traitement pouvant provoquer une exception
[rescue [error_type,..] [=> evar] [then]
  #Que faire lorsqu'une exception se produit
[else
  #Traitement lorsqu'une exception ne se produit pas]
[ensure
  #Traitement exécuté indépendamment des exceptions]
end

begin ʻelse ʻensure est facultatif.

Bien que ce soit "Rational" qui n'est généralement pas utilisé, c'est une classe qui gère les nombres rationnels tels que "1/3". to_r interprète le premier nombre, mais Rational semble bien soulever une exception.

ruby6.rb


puts '0x8'.to_r     # => 0/1
puts Integer('0x8') # => 8
puts Float('0x8')   # => 8.0
puts Complex('0x8') # => ArgumentError
puts Complex('08i') # => 0+8i

Complex est une classe qui gère les nombres complexes, et une exception se produit dans 0x8, mais les chaînes contenant ʻi` peuvent être contournées.

Est-il pénible d'utiliser to_i pour la sortie standard, ou je pense qu'il vaut mieux utiliser des expressions régulières comme d'habitude.

Résumé

Site référencé

Recommended Posts

Résolution avec Ruby AtCoder 1er test pratique de l'algorithme Une gestion des exceptions
Apprendre Ruby avec AtCoder 10 [1er test pratique d'algorithme DoubleCamelCase Sort]
Apprendre Ruby avec AtCoder 9 [1er test pratique d'algorithme 3ème] Tri des éléments du tableau
Apprentissage de Ruby avec AtCoder 14 [3rd Algorithm Practical Test Sprinkler] Création de hachage, ajout de clé / valeur
Gestion des exceptions avec une interface fluide
gestion des exceptions ruby
Gestion des exceptions Ruby
AtCoder Beginner Contest 169 A, B, C avec rubis
À propos de la gestion des exceptions Ruby
Tableau 2D AtCoder ABC129 D résolu en Ruby et Java
Résolution avec Ruby, Perl et Java AtCoder ABC 128 C
Apprendre Ruby avec AtCoder 13 Comment créer un tableau à deux dimensions
Résolution avec Ruby, Perl et Java AtCoder ABC 129 C (Partie 1)
[Ruby] Gestion des exceptions dans les fonctions
Résolution avec Ruby AtCoder ACL Débutant Contest C Union Find (DSU)
Recherche de priorité de largeur AtCoder ABC 136 D résolue en Ruby, Perl et Java
Apprendre Ruby avec AtCoder 6 [Concours 168 Donc]
Faites un jeu de frappe avec ruby
Résolution avec Ruby, Perl et Java AtCoder ABC 129 C (Partie 2) Méthode de planification dynamique