Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Poiana lui Ioc Khan CPI

Reconditionare cada baie din fonta

Problema imprimanta

Here goes nothing
 BCR sau Raiffeisen

Visual Studio 2022 instaleaza Epi...

Sfat alegere parbriz

EMAG - recenzii false facute de ei?
 Recomandare telefon 900-950

Nivel de trai

Semnal bun da'... prost

De ce statiile de radio FM nu ren...
 Pe unde pot sa gasesc statistici ...

Este reconditionat acest laptop?

Prelungire fire electrice

Amintiri despre satelit si retran...
 

Guessing Game in python

- - - - -
  • Please log in to reply
6 replies to this topic

#1
Bylly00

Bylly00

    Senior Member

  • Grup: Senior Members
  • Posts: 3,729
  • Înscris: 27.06.2015
Salutare, am incercat sa rezolv urmatoarea problema http://www.practicep...g-game-one.html
Pare simplu la inceput, dar dupa ce ieri seara m-am chinuit vreo 2 ore si inca vreo jumatate de ora in seara asta am decis sa va cer ajutorul.

Dupa vreo 50 de versiuni am pierdut versiunea care functiona cel mai aproape de cerinte si am ramas cu chestia asta care nici nu porneste din cauza ca.... nici nu mai stiu de ce.
In fine:

import random
number=random.randint(0, 9)
print 'Type exit to leave'
guess=input('Try to guess a number between 0 and 9: ')
def is_number(s):#functia verifica daca este un numar#
    try:
    float(s)
    return True
    except ValueError:
    return False
def valid(s):#verifica daca in plus este si in range#
    if is_number(s):
    if int(s) in range(0,10):
    return True
    else:
    return False
    else:
    return False
'''Aici e beleaua, programul trebuie sa ceara numere atata timp ca optiunea nu reprezinta un numar valid, nu
este numarul generat (adica numarul care trebuie ghicit), si nu este comanda de iesire - exit'''
while valid(guess)!=True and guess!='exit' and guess!=number:
    print 'Please insert valid number: '
    guess=input('Try to guess a number between 0 and 9: ')
else:
    if guess=='exit':
    print 'Goodbye'
  
    elif int(guess)==number
    print 'Lucky madafaca'

Am mai gasit niste "solutii" pe siteul respectiv dar unele nici nu ruleaza, altele nu tin cont de multe chestii in principiu nu tin cont de introducerea de text in loc de numar sau nu tin cont de introducerea cuvantului exit. Pentru mine problema principala este ca nu stiu cum sa tin whileul asta activ atata timp cat am aceste 3 conditii - sa fie numar valid, sa nu fie numarul castigator si sa nu fie comanda exit .

Am inceput sa studiez python acum vreo saptamana asta dupa ce acum vreo 100 de ani am facut turbo pascal si mi se pare un limbaj de programare super: simplu si totodata foarte puternic.

#2
mufa

mufa

    Porc misogin

  • Grup: Super Moderators
  • Posts: 40,804
  • Înscris: 13.01.2005
Hmm, din ce citesc acolo mi se pare ca trebuie sa ceara numere pina spune utilizatorul exit si la sfirsit sa-i spuna de cite ori a ghicit.

Keep the game going until the user types “exit”
Keep track of how many guesses the user has taken, and when the game ends, print this out.

Nu-s programator, dar aș face ceva de genul:

from random import randint
guess = 0
tries = 0
while True:
	n = randint(0,9)
	s = raw_input("Enter a number to guess or exit to quit: ")
	if s == "exit":
		break
	else:
		try:
			float(s)
			if int(s) < n:
				print "Too low"
			elif int(s) > n:
				print "Too high"
			else:
				print "You guessed"
				guess = guess + 1
			tries = tries + 1
		except ValueError:
			print "Not valid"
print "You tried %d times and guessed %d times" %(tries, guess)



#3
mufa

mufa

    Porc misogin

  • Grup: Super Moderators
  • Posts: 40,804
  • Înscris: 13.01.2005
Uite și soluția pentru problema expusă de tine, cred:

from random import randint
tries = 0
s = 0
n = randint(0,9)
while True:
	s = raw_input("Enter a number to guess or exit to quit: ")
	if s == "exit":
		print "You didn't guess the number"
		break
	try:
		float(s)
		tries = tries + 1
		if int(s) < n:
			print "Too low"
		elif int(s) > n:
			print "Too high"
		else:
			print "It took you %d tries to guess the number" %(tries)
			break
	except ValueError:
		print "Not valid"




#4
Bylly00

Bylly00

    Senior Member

  • Grup: Senior Members
  • Posts: 3,729
  • Înscris: 27.06.2015
Eh, eu as spune ca esti (programator), dar cine sunt eu sa pun etichete oamenilor ? Posted Image
Multumesc frumos pentru rezolvare. Pe codeacademy nu am dat peste structura try/except si de aceea nu m-am gandit sa integrez in ea si restul conditiilor; doar am copiat acea functie de undeva si am folosit-o separat.
De asemenea nu am mai folosit pana acum while in felul asta, am bagat la cap acum (sper).

Edited by Bylly00, 05 December 2015 - 13:02.


#5
mishpowerpuff

mishpowerpuff

    Member

  • Grup: Members
  • Posts: 324
  • Înscris: 12.04.2007
"Guesses" înseamnă presupuneri, adică să numeri de câte ori încearcă.

Nu prea are sens să numeri de câte ori nimerește, pentru că jocul se termină oricum când nimerește.

Ce zice mai departe "keep the game going" este să tot întrebi până nimerește sau până renunță (cu exit), pentru că enunțul inițial era să generezi un număr, să întrebi care e, să răspunzi că e mai mic, mai mare sau chiar el și acolo se termină programul.
Adică să folosești while, care nu e necesar pentru rezolvarea inițială.

#6
Bylly00

Bylly00

    Senior Member

  • Grup: Senior Members
  • Posts: 3,729
  • Înscris: 27.06.2015
A doua varianta propusa de mufa e ok, nu gasesc nimic in neregula cu ea. Am priceput intre timp ca trebuie sa ai mare grija de exceptii, sa iei in calcul tot ce poate merge intr-un mod neasteptat (de exemplu sa fie introdus text in loc de o valoare numar intreg sau alte bazaconii), trebuie sa prinzi acele exceptii si sa stii ce sa faci cu ele.

Din cate inteleg eu, varianta while este singura, devreme ce nu stim de cate ori se va repeta programul (nu stim de cate incercari e nevoie pentru a gasi solutia).

Se poate altfel?

Edited by Bylly00, 17 December 2015 - 22:50.


#7
mishpowerpuff

mishpowerpuff

    Member

  • Grup: Members
  • Posts: 324
  • Înscris: 12.04.2007
Ai înțeles bine, while folosești când nu știi de câte ori vei face ceva.

Anunturi

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate