Lösen mit Ruby AtCoder 1. Algorithmus Praktischer Test Eine Ausnahmebehandlung

Einführung

Dieses Thema

Dieses Thema, Ausnahmebehandlung

Wenn Sie den Grundlagen treu sind, werden Sie mit "regulärem Ausdruck" antworten, aber ich möchte mit "Ausnahmebehandlung" antworten, um *** Ruby *** besser zu verstehen.

Ruby regulärer Ausdruck

Muster, wenn alle drei Buchstaben Zahlen sind

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')

Muster, wenn nur ein Zeichen in Kleinbuchstaben geschrieben ist

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)

Muster, wenn nur ein Zeichen eine andere als eine Zahl ist

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) Muster mit to_i direkt angewendet

ruby4.rb


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

Ruby Rational (AC) Muster mit "Rational" angewendet

ruby5.rb


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

Die Kontrollstruktur für die Ausnahmebehandlung ist wie folgt.

rescue.rb


begin
  #Verarbeitung, die eine Ausnahme verursachen kann
[rescue [error_type,..] [=> evar] [then]
  #Was tun, wenn eine Ausnahme auftritt?
[else
  #Verarbeitung, wenn keine Ausnahme auftritt]
[ensure
  #Verarbeitung unabhängig von Ausnahmen ausgeführt]
end

begin`` else`` sure ist optional.

Obwohl "Rational" normalerweise nicht verwendet wird, handelt es sich um eine Klasse, die rationale Zahlen wie "1/3" verarbeitet. to_r interpretiert die erste Zahl, aber Rational scheint eine Ausnahme gut auszulösen.

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 ist eine Klasse, die komplexe Zahlen verarbeitet, und obwohl in 0x8 eine Ausnahme auftritt, kann eine Zeichenfolge mit i umgangen werden.

Ist es schmerzhaft, to_i für die Standardausgabe zu verwenden, oder ich denke, es ist besser, reguläre Ausdrücke wie gewohnt zu verwenden.

Zusammenfassung

Referenzierte Site

Recommended Posts

Lösen mit Ruby AtCoder 1. Algorithmus Praktischer Test Eine Ausnahmebehandlung
Ruby mit AtCoder 10 lernen [1. Algorithmus Praktischer Test DoubleCamelCase Sort]
Ruby mit AtCoder 9 lernen [1. Algorithmus Praktischer Test 3.] Sortieren von Array-Elementen
Ruby mit AtCoder 14 lernen [3. Algorithmus Praktischer Test Sprinkler] Hash-Erstellung, Schlüssel- / Wertschöpfung
Ausnahmebehandlung mit einer Fluidschnittstelle
Behandlung von Ruby-Ausnahmen
Ruby-Ausnahmebehandlung
AtCoder Anfängerwettbewerb 169 A, B, C mit Rubin
Informationen zur Behandlung von Ruby-Ausnahmen
AtCoder ABC129 D 2D-Array In Ruby und Java gelöst
Lösen mit Ruby, Perl und Java AtCoder ABC 128 C.
Ruby mit AtCoder lernen 13 So erstellen Sie ein zweidimensionales Array
Lösen mit Ruby, Perl und Java AtCoder ABC 129 C (Teil 1)
[Ruby] Ausnahmebehandlung in Funktionen
Lösen mit Ruby AtCoder ACL Anfängerwettbewerb C Union Find (DSU)
AtCoder ABC 136 D Suche nach Breitenpriorität Gelöst in Ruby, Perl und Java
Ruby mit AtCoder 6 lernen [Contest 168 Daher]
Machen Sie ein Tippspiel mit Ruby
Lösen mit Ruby, Perl und Java AtCoder ABC 129 C (Teil 2) Dynamische Planungsmethode