Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Argumentos não reconhecidos

Os argumentos que eu forneci para a função pedindo_um_chute, pelo que eu entendi não estão sendo reconhecidos ou algo assim...Alguém pode me ajudar?

A mensagem de erro:

Traceback (most recent call last):
        1: from C:/Users/Pedro/maior_ou_menor.rb:39:in `<main>'
C:/Users/Pedro/maior_ou_menor.rb:23:in `pedindo_um_chute': wrong number of arguments (given 0, expected 2) (ArgumentError)

Eis o código:

def boas_vindas
    puts "Bem vindo ao jogo da adivinhação"
    puts "Qual o seu nome?"
    nome = gets 

    puts "\n"

    puts "Começaremos o jogo agora, " + nome
end

def sorteio_de_número
    puts "\n"

    puts "Escolhendo um número aleatório entre 0 e 200..."
    numero_escolhido = 175

    puts "\n"

    puts "ESCOLHIDO! Descubra-o se for capaz...Você tem 4 chances... "
    return numero_escolhido
end

def pedindo_um_chute(limite_de_tentativa, tentativa)
    puts "Insira seu chute número " + tentativa.to_s
    chute = gets

    puts "\n"

    puts "Será que você acertou? Você chutou " + chute

    puts "\n"
    return chute.to_i
end


boas_vindas 
numero_aleatorio = sorteio_de_número
limite_de_tentativa = 5
chute = pedindo_um_chute

for tentativa in 1..limite_de_tentativa
acertou = numero_aleatorio == chute
if acertou
    puts "Acertou :)"
    break
else 
maior = numero_aleatorio > chute
    if maior 
        puts "Errou! O número é maior! Tente de novo!"
    else 
        puts "Errado! O número é menor! Tente de novo!"
    end
end 
end

Obrigado!

3 respostas

Bom dia Pedro, Verifique que você invocou o método pedindo_um_chute que requer 2 atributos, porém você não está passando nenhum deles.

boas_vindas

numero_aleatorio = sorteio_de_número

limite_de_tentativa = 5

chute = pedindo_um_chute <----- aqui você deve passar os atributos, conforme está na definição do método, deve ficar assim:

chute = pedindo_um_chute(atributo1, atributo2)

Espero ter conseguido ajudar.

Bom dia William!

Testei e apareceu um outro erro ;-;

Me parece que o erro é na linha da própria função/metódo

O erro:

Traceback (most recent call last):
C:/Users/Pedro/maior_ou_menor.rb:39:in `<main>': undefined local variable or method `tentativa' for main:Object (NameError)

O código:

def boas_vindas
    puts "Bem vindo ao jogo da adivinhação"
    puts "Qual o seu nome?"
    nome = gets 

    puts "\n"

    puts "Começaremos o jogo agora, " + nome
end

def sorteio_de_número
    puts "\n"

    puts "Escolhendo um número aleatório entre 0 e 200..."
    numero_escolhido = 175

    puts "\n"

    puts "ESCOLHIDO! Descubra-o se for capaz...Você tem 4 chances... "
    return numero_escolhido
end

def pedindo_um_chute(limite_de_tentativa, tentativa)
    puts "Insira seu chute número " + tentativa.to_s
    chute = gets

    puts "\n"

    puts "Será que você acertou? Você chutou " + chute

    puts "\n"
    return chute.to_i
end


boas_vindas 
numero_aleatorio = sorteio_de_número
limite_de_tentativa = 5
chute = pedindo_um_chute(limite_de_tentativa, tentativa)

for tentativa in 1..limite_de_tentativa
acertou = numero_aleatorio == chute
if acertou
    puts "Acertou :)"
    break
else 
maior = numero_aleatorio > chute
    if maior 
        puts "Errou! O número é maior! Tente de novo!"
    else 
        puts "Errado! O número é menor! Tente de novo!"
    end
end 
end

Obrigado!

solução!

No for onde você verifica as tentativas, a variável tentativa não foi declara antes, então ela não existe, é o que o erro está dizendo: C:/Users/Pedro/maior_ou_menor.rb:39:in <main>': undefined local variable or methodtentativa

Você pode declarar ela antes do for e atribuir um valor a ela, dessa maneira vai funcionar.