Esercizio di programmazione

Ciao a tutti intanto voglio ringraziare tutto il forum per gli aiuti.
Volevo chiedervi un altro
help dal momento che continuo a cimentarmi con il fantastico mondo
della programmazione: il dubbio riguarda l’utilizzo del metodo “rand”.
L’esercizio è il seguente: “• Scrivi un programma “Nonna Sorda”.
Qualsiasi cosa tu dica alla nonna (qualsiasi cosa tu scriva al
programma), lei dovrebbe rispondere con un EH?! ALZA LA VOCE,
FIGLIUOLO!, a meno che tu non l’abbia gridato (scritto in lettere
maiuscole). Se gridi allora può sentirti (o almeno così pensa) e allora
ti risponde: NO, NON DAL 1938!. Per rendere questo programmino davvero
credibile, fai in modo che la nonna gridi un anno differente tutte le
volte; magari un numero casuale tra il 1930 e il 1950.” estrapolato da
http://corsorubyonrails.com Il problema mi si pone quando devo mettere
in atto la seconda parte cioè appunto per far scegliere alla “nonna” un
numero compreso tra il 1930 e 1950.
Io lo provo a scrivere in questa maniera:
puts ‘Dimmi’
frase = gets.chomp
if frase == frase.downcase
puts ‘Eh alza la voce figliuolo!’
else frase == frase.upcase
anno = rand(1930…1950)
puts ‘NO NON DAL ’ + anno
end
E mi viene restituito il seguente errore in esecuzione:
calc.rb:7:in ‘+’: no implicit conversion of Fixnum into String
(TypeError) from calc.rb:7:in’ ’
Vi ringrazio ancora per l’attenzione e mi scuso del disturbo.

Loperatore + non esegue il cast, ovvero la conversione delle variabili.
Io ti consiglio di usare quando possibile linterpolazione, quindi:

puts NO, NON DAL #{anno}

In alternativa, usa #to_s

puts NO, NON DAL + anno.to_s

ma a me non piace :slight_smile:

Buono studio!

Luca P.
[email protected]

Ti ringrazio ho risolto!