Pequena dúvida - Game Guess the number? While [RESOLVIDO]

1. Pequena dúvida - Game Guess the number? While [RESOLVIDO]

Gabriel Fernandez Silva
Gabriel_FSilva

(usa Linux Mint)

Enviado em 01/07/2016 - 19:09h

Sou bem iniciante em python e retomei meus estudos (apesar de não ser da área). Vi um game de guesses e repliquei, porém adicionei o while no final do código para jogar continuamente, porém (apesar das diversas tentativas de mudar o código) ele só executa duas vezes e não infinitamente como eu gostaria.

Não sei se o valor não retorna para o while, se não como fazer para ele retornar?
#!/usr/bin/python3

import random
import sys

print("What is your name")
name = input()
print("Hello "+ str(name))

print ('I have a trick question for you, now I thinking in a number betwen 0 and 20. guess the number')

def guesses(play):
guessTaken = 0
mynumber = random.randint(0,20)

while guessTaken < 3:
print ('Take a guess:')
guess = input()
guess = int(guess)

guessTaken = guessTaken+1
if guess < mynumber:
print("Number is too low :P")
if guess> mynumber:
print("Number is too high. Guess again! <3")
if guess == mynumber:
break

if guess == mynumber:
print("Guess taken "+ str(guessTaken))
print("Good job ")
print( "Do you wanna play again? Press 1")
again = input()
return again
if guess != mynumber:
print(str(guessTaken)+"it's enough")
print("The number was "+" "+str(mynumber))
print( "Wanna play again ? Press 1")
again = input()
return again

play= 1
guesses(play)
play = guesses(play)
while guesses(play) == 1:
guesses(play)


Desde já obrigado ;)


  


2. MELHOR RESPOSTA

Matth
MattF

(usa Slackware)

Enviado em 01/07/2016 - 20:40h

Simples. Lembre-se que python possue tipagem dinamica e quando você pega augo com a função input ele não será compreendido como um número inteiro, por isso a igualdade não é estabelecida. Pra que essas coisas com a função guesses antes? Eu deixaria assim:


#!/usr/bin/python3

import random
import sys

print("What is your name")
name = input()
print("Hello "+ str(name))

print ('I have a trick question for you, now I thinking in a number betwen 0 and 20. guess the number')

def guesses(play):
guessTaken = 0
mynumber = random.randint(0,20)

while guessTaken < 3:
print ('Take a guess:')
guess = input()
guess = int(guess)

guessTaken = guessTaken+1
if guess < mynumber:
print("Number is too low :P")
if guess> mynumber:
print("Number is too high. Guess again! <3")
if guess == mynumber:
break

if guess == mynumber:
print("Guess taken "+ str(guessTaken))
print("Good job ")
print( "Do you wanna play again? Press 1")
again = int(input())
return again
if guess != mynumber:
print(str(guessTaken)+"it's enough")
print("The number was "+" "+str(mynumber))
print( "Wanna play again ? Press 1")
again = int(input())
return again

play= 1


while guesses(play) == 1:
guesses(play)



3. Re: Pequena dúvida - Game Guess the number? While [RESOLVIDO]

Gabriel Fernandez Silva
Gabriel_FSilva

(usa Linux Mint)

Enviado em 02/07/2016 - 00:24h

MattF escreveu:

Simples. Lembre-se que python possue tipagem dinamica e quando você pega augo com a função input ele não será compreendido como um número inteiro, por isso a igualdade não é estabelecida. Pra que essas coisas com a função guesses antes? Eu deixaria assim:


#!/usr/bin/python3

import random
import sys

print("What is your name")
name = input()
print("Hello "+ str(name))

print ('I have a trick question for you, now I thinking in a number betwen 0 and 20. guess the number')

def guesses(play):
guessTaken = 0
mynumber = random.randint(0,20)

while guessTaken < 3:
print ('Take a guess:')
guess = input()
guess = int(guess)

guessTaken = guessTaken+1
if guess < mynumber:
print("Number is too low :P")
if guess> mynumber:
print("Number is too high. Guess again! <3")
if guess == mynumber:
break

if guess == mynumber:
print("Guess taken "+ str(guessTaken))
print("Good job ")
print( "Do you wanna play again? Press 1")
again = int(input())
return again
if guess != mynumber:
print(str(guessTaken)+"it's enough")
print("The number was "+" "+str(mynumber))
print( "Wanna play again ? Press 1")
again = int(input())
return again

play= 1


while guesses(play) == 1:
guesses(play)



Não sabia que com input() ele não compreende como inteiro, pois sempre no terminal python quando declarava uma variável e usando a função input e depois olhava type(variavel) vinha type (int).Isso é meio confuso, não sei se tem a ver com as versões do python pois no terminal uso por padrão da distro o 2.7 e na ide uso o 3.4, li que a função input() teve modificações nessas versões. Você sabe porque isso acontece?

Essas coisas com a função guesses é o resultado da minha pífia tentativa de fazer funcionar.

Vou deixar em aberto o tópico para ver se alguém responde o "porque".

Muito obrigado MattF.


4. Re: Pequena dúvida - Game Guess the number? While [RESOLVIDO]

Matth
MattF

(usa Slackware)

Enviado em 02/07/2016 - 12:04h

Sim, não sou muito fã do python3, apesar de ser python do mesmo jeito, mas é bem simples de verificar isso pela shell.

$ python2.7
Python 2.7.11+ (default, Apr 17 2016, 14:00:29)
[GCC 5.3.1 20160413] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a=input()
1
>>> type(a)
<type 'int'>
>>>
>>>
$ python3
Python 3.5.1+ (default, Mar 30 2016, 22:46:26)
[GCC 5.3.1 20160330] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a=input()
1
>>> type(a)
<class 'str'>
>>>



5. Re: Pequena dúvida - Game Guess the number? While [RESOLVIDO]

Lisandro Guerra
Lisandro

(usa Arch Linux)

Enviado em 04/07/2016 - 21:20h

MattF escreveu:

Sim, não sou muito fã do python3, apesar de ser python do mesmo jeito, mas é bem simples de verificar isso pela shell.

$ python2.7
Python 2.7.11+ (default, Apr 17 2016, 14:00:29)
[GCC 5.3.1 20160413] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a=input()
1
>>> type(a)
<type 'int'>
>>>
>>>
$ python3
Python 3.5.1+ (default, Mar 30 2016, 22:46:26)
[GCC 5.3.1 20160330] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a=input()
1
>>> type(a)
<class 'str'>
>>>


Perfeito.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts