#1 Le 25/07/2008, à 20:28
- Fallout_Xtreme
[Débutant] Problème de Script avec Ruby
Bonsoir à tous,
Je débute la programmation avec Ruby depuis trés peu de temps.
J'ai donc essayé de faire un Convertisseur €-->F / F-->€ pour m'entraîner mais là j'ai une seule erreur dans mon code source mais je n'arrive pas à comprendre d'où elle vient.
Voici donc mon code :
def euros
puts "Quel montant voulez vous convertir en F ?"
montant = gets
resultat = $_*6.55957
puts "#{montant} E = #{resultat} F"
end
def francs
puts "Quel montant voulez vous convertir en E ?"
montant2 = gets
resultat2 = $_/6.55957
puts "#{montant2} F = #{resultat2} E"
end
puts "Convertisseur E-->F / F-->E"
puts "Voulez-vous convertir des E-->F ou des F-->E ?"
puts "Tapez le chiffre correspondant à votre choix :"
puts "1. E-->F"
puts "2. F-->E"
choixUtilisateur = gets
if choixUtilisateur == 1
puts euros
else choixUtilisateur == 2
puts francs
end
Et lorsque je le compile, voici l'erreur que j'obtiens :
"Test.rb:11:in "francs" : undefined method "/" for "6\n":String <NoMethodError>
from Test.rb:25"
Voila, donc si quelqu'un pourrait me dire d'où vient l'erreur, je le remercie d'avance car là vraiment je vois pas.
Cordialement,
Fallout_Xtreme
Hors ligne
#2 Le 25/07/2008, à 20:44
- jojo-lapin
Re : [Débutant] Problème de Script avec Ruby
Salut,
d'après moi ce n'est pas grand chose, c'est juste que gets renvoie une chaîne de caractère avec "\n" à la fin et qu'ensuite tu essaies d'appliquer une division à cette chaîne de caractère.
essaie
montant2=gets.chomp (supprime "\n")
montant2.to_i (transforme le(s) caractère(s) en entier.
#3 Le 25/07/2008, à 21:05
- Fallout_Xtreme
Re : [Débutant] Problème de Script avec Ruby
J'ai essayé d'appliquer ce que tu m'as conseillé.
Maintenant mon code ressemble à ceci :
def euros
puts "Quel montant voulez vous convertir en F ?"
montant = gets.chomp
montant.to_i
resultat = montant * 6.55957
print "#{montant} E = #{resultat} F"
end
def francs
puts "Quel montant voulez vous convertir en E ?"
montant2=gets.chomp
montant2.to_i
resultat2 = montant2 / 6.55957
print "#{montant2} F = #{resultat2} E"
end
puts "Convertisseur E-->F / F-->E"
puts "Voulez-vous convertir des E-->F ou des F-->E ?"
puts "Tapez le chiffre correspondant à votre choix :"
puts "1. E-->F"
puts "2. F-->E"
choixUtilisateur = gets
if choixUtilisateur == 1
puts euros
else
puts francs
end
Mais j'ai encore une erreur lors de la compilation. Seul le début du code fonctionne aprés le programme plante avec cette erreur qui est apparemment quasi-identique à celle de tout à l'heure.
"Test.rb:13:in "francs": undefined method "/" for "5":String <NoMethodError>
from Test.rb:27
Je vais m'arracher les cheveux ^^.
Hors ligne
#4 Le 25/07/2008, à 21:22
- jojo-lapin
Re : [Débutant] Problème de Script avec Ruby
C'est normal:
remplace
montant2=gets.chomp
montant2.to_i
resultat2 = montant2 / 6.55957
par
montant2=gets.chomp
resultat2 = montant2.to_i / 6.55957
#5 Le 25/07/2008, à 21:30
- Fallout_Xtreme
Re : [Débutant] Problème de Script avec Ruby
Ah excuse moi ^^.
Bon j'ai essayé de procéder comme ça. Et là plus d'erreur de compilation mais toujours un problème qui persiste.
Lors du choix de la conversion €-->F ou F-->€, peu importe ce que je choisis, je retombe toujours sur une conversion F-->€.
Voici le code corrigé :
def euros
puts "Quel montant voulez vous convertir en F ?"
montant = gets.chomp
resultat = montant.to_i * 6.56
print "#{montant} E = #{resultat} F"
end
def francs
puts "Quel montant voulez vous convertir en E ?"
montant2=gets.chomp
resultat2 = montant2.to_i / 6.56
print "#{montant2} F = #{resultat2} E"
end
puts "Convertisseur E-->F / F-->E"
puts "Voulez-vous convertir des E-->F ou des F-->E ?"
puts "Tapez le chiffre correspondant à votre choix :"
puts "1. E-->F"
puts "2. F-->E"
choixUtilisateur = gets
if choixUtilisateur == 1
puts euros
else choixUtilisateur != 1
puts francs
end
(J'ai arrondi 6.55957 en 6.56 car ça me faisait sinon des chiffres à plusieurs dizaines de décimales aprés la virgule.)
Et j'ai rajouté
choixUtilisateur != 1
dans le code pour voir si ça arrangeait mon problème mais rien n'y fait.
Hors ligne
#6 Le 25/07/2008, à 21:36
- jojo-lapin
Re : [Débutant] Problème de Script avec Ruby
C'est toujours le même genre de problème, tu compares une chaîne de caractère se terminant par "\n" avec un entier.
voici le code qui fonctionne:
choixUtilisateur = gets.chomp
if choixUtilisateur == "1"
puts euros
else
puts francs
end
#7 Le 25/07/2008, à 21:59
- Fallout_Xtreme
Re : [Débutant] Problème de Script avec Ruby
Merci beaucoup pour toute ton aide !
Je viens de comprendre mon erreur. (Je sais je suis long à la détente ^^)
Il ne me reste plus qu'à virer le "nil" qui se met dans le résultat final aprés le sigle E ou F.
Merci encore !
Bonne fin de soirée.
Fallout_Xtreme
Hors ligne