Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

Program zgadnij liczbę = odwrócona wersja



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Python
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Pawcio



Dołączył: 17 Mar 2016
Posty: 10

PostWysłany: Pią Mar 25, 2016 5:55 pm  OP    Temat postu: Program zgadnij liczbę = odwrócona wersja Odpowiedz z cytatem Pisownia

W książce "Python dla każdego" przedstawiony jest program, gdzie zgadujemy liczbę pomyślaną przez komputer. Chcę go odwrócić, tzn. my wymyślamy liczbę, a program ją zgaduje.

Kod:
# -*- coding: utf-8 -*-

import random

print("\tWitaj w grze 'Jaka to liczba'!")
print("\nPomyśl jakąś liczbę od 1 do 100 a ja ją odgadnę.")

guess = int(input("Wpisz liczbę:")

komputer = random.randint(1,100)


# pętla zgadywania
while guess != komputer:
            continue
            
if guess = komputer:
            break

                
print ("ta liczba to" komputer)


Ten kod jest błędny z samego założenia, gdyż już wpisujemy liczbę. Ale i tak nie jest on wykonywalny. Ma ktoś pomysł jak to ogarnąć?
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
marcin_an



Dołączył: 26 Maj 2005
Posty: 18822

PostWysłany: Pią Mar 25, 2016 6:23 pm      Temat postu: Odpowiedz z cytatem Pisownia

To, że komputer "zna" liczbę w niczym nie przeszkadza. To nie człowiek, nie będzie oszukiwał.

Programowanie nie polega na przepisywaniu gotowych rozwiązań, tylko ich znajdywaniu. Zastanów się, w jaki sposób ty byś zgadywał tę liczbę, gdybyś był na miejscu komputera. I dokładnie to samo musi zrobić komputer. Najpierw opisz to normalnie, po polsku. Dopiero potem przełóż to na Pythona.

Podpowiem, że tę liczbę się zgadnąć w maksymalnie 7 próbach. Typowo w 5. Zakładając, że użyjesz właściwego algorytmu i komputer będzie zadawał dodatkowe pytania. Ten, który próbujesz w tej chwili wykorzystać, może się nigdy nie zakończyć, po 70 próbach zakończy się w połowie przypadków i trzeba około 700 podejść, żeby mieć prawdopodobieństwo sukcesu na poziomie 0.999.

_________________
Nieaktywny od 2017-04-01
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Pawcio



Dołączył: 17 Mar 2016
Posty: 10

PostWysłany: Pią Mar 25, 2016 7:24 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Ok takowego rozwiązania poszukam i podziele się nim na forum :) Nie wiem tylko dlaczego w przypadku powyżej wyskakuje mi błąd
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
hurgadion



Dołączył: 06 Kwi 2011
Posty: 853
Skąd: Web :)

PostWysłany: Pon Mar 28, 2016 9:12 am      Temat postu: Odpowiedz z cytatem Pisownia

ufff... ten kod nie trzyma się... no... niczego się w sumie nie trzyma... :)

zacznij od prostych przykładów, na początek przetestuj jak działa pętla:
Kod:

x=0
while x<5:
    x+=1
    print(x)


następnie przetestuj jak działa pętla:
Kod:

x=5
while x<5:
    x+=1
    print(x)


zastanów się jak działa pętla:
Kod:

x=0
while x<5:
   print(x)


na razie tyle, powodzenia w testowaniu tych kodów :)

PS. oprócz tego masz jeszcze co najmniej dwa błędy wynikające z braku podstaw... także obstaw się książkami, kodami z netu... analizuj, próbuj, testuj... jak masz ochotę, to pobaw się na SPOJu, sporo się można nauczyć, ja też zamierzam tam jeszcze wrócić... jest tam parę prostych zadanek, które można zrobić w paru linijkach w Pythonie...

_________________
miasto nauki praktycznej
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora Numer GG
Pawcio



Dołączył: 17 Mar 2016
Posty: 10

PostWysłany: Pon Mar 28, 2016 9:52 am  OP    Temat postu: Odpowiedz z cytatem Pisownia

Kod:
# -*- coding: utf-8 -*-

import random

print("\tWitaj w grze 'Jaka to liczba'!")
print("\nPomyśl jakąś liczbę od 1 do 100 a ja ją odgadnę.")

user = int(input("\nWpisz liczbę od 1 do 100"))

komputer = 0

while komputer != user:
    if komputer > user:
        komputer -= 1
        print ("szukam dalej >")
    else:
        komputer += 1
        print ("szukam dalej <")

print ("udało mi się")

Kod nie jest cytatem, więc stosuj właściwe znaczniki do kodu Zobacz: znaczniki formatujące - jak stosować. - Samolot


Ogarnąłem kod przy założeniu, że program "zna"liczbę. W wolnej chwili go przerobię. Tylko dzieje się teraz to o czym pisał kolega wyżej. Czasami jest dużo prób. Zastanawiam się czy tutaj będzie miał wykorzystanie funkcja random.randrange tzn. przy każdej próbie zawężamy pola do poszukiwań.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
hurgadion



Dołączył: 06 Kwi 2011
Posty: 853
Skąd: Web :)

PostWysłany: Pon Mar 28, 2016 10:29 am      Temat postu: Odpowiedz z cytatem Pisownia

Warunek computer>user nigdy nie będzie spełniony przy Twoich założeniach, więc jest zbędny, ale generalnie programik jest chyba OK, natomiast lepiej wybrać punkt startowy 50, wtedy Twój kod będzie przeciętnie dwa razy szybciej działał... Natomiast znacznie przyspieszyć działanie może algorytm Binary Search, warto go znać...
_________________
miasto nauki praktycznej
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora Numer GG
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Python Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.14157 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |