• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Program, w którym komputer ma za zadanie zgadnąć podaną przez użytkownika liczbę

0 głosów
79 wizyt
pytanie zadane 2 kwietnia w Python, Django przez sladewilson Nowicjusz (140 p.)

Cześć. Chcę napisać program, w którym komputer ma za zadanie odgadnąć wpisaną przeze mnie liczbę. Coś robię źle, ponieważ gdy tylko wpisze liczbę x od razu wyświetlany jest komunikat końcowy.

 

import random

x=int(input("Wybierz liczbe od 0 do 100: "))
if x < 0:
    print("Liczba mniejsza od 0")
    x=int(input("Wybierz liczbe od 0 do 100: "))
elif x > 100:
    print("Liczba wieksza od 100")
    x=int(input("Wybierz liczbe od 0 do 100: " ))

y=int(random.randint(0, 100))

while y != x:

    if y < x:
        y = y + int(random.randint(1, 100))
    elif y > x:
        y = y - int(random.randint(1, 100))


print("Wygralem, twoja liczba to: ", y)
input()

Z góry dziękuję za pomoc.

1 odpowiedź

+3 głosów
odpowiedź 2 kwietnia przez magija Początkujący (260 p.)

Cześć.
Zacznijmy od tego, że początkowe ify są troszkę pomylone: co jeśli ktoś uparcie po raz kolejny znów poda 0? Albo 100? Tego komputer już nie sprawdzi. Dlatego lepiej w tym miejscu zadziała pętla while.

Później przy random.randint nie musisz zmieniać niczego na int, bo jak sama nazwa wskazuje, to już będzie int. A tak naprawdę, to wcale nie potrzebujesz tutaj randoma. Takie zadanie najlepiej rozwiązać przy użyciu binary search: zawsze strzelasz w połowę przedziału początek-koniec i sprawdzasz, czy szukana liczba jest większa czy mniejsza od tej "odgadniętej" przez komputer.

Poniżej moja propozycja:
 

my_number = -1
while my_number < 0 or my_number > 100:
    my_number = int(input("Wybierz liczbe od 0 do 100: "))

start = 0
end = 100
computer_guess = (start + end) // 2

while computer_guess != my_number:
    if computer_guess < my_number:
        start = computer_guess
    else:
        end = computer_guess
    computer_guess = (start + end) // 2

print("Wygralem, twoja liczba to: ", computer_guess)
input()

 

komentarz 2 kwietnia przez sladewilson Nowicjusz (140 p.)
dziękuję

Podobne pytania

0 głosów
2 odpowiedzi 267 wizyt
0 głosów
1 odpowiedź 136 wizyt
pytanie zadane 2 grudnia 2016 w Python, Django przez GUNJack Użytkownik (520 p.)
–3 głosów
1 odpowiedź 138 wizyt
pytanie zadane 14 listopada 2016 w Python, Django przez Jakub Śliż Użytkownik (940 p.)
Porady nie od parady
Nie wiesz jak poprawnie zredagować pytanie lub pragniesz poznać którąś z funkcji forum? Odwiedź podstronę Pomoc (FAQ) dostępną w menu pod ikoną apteczki.FAQ

67,147 zapytań

114,092 odpowiedzi

241,834 komentarzy

47,041 pasjonatów

Przeglądających: 278
Pasjonatów: 17 Gości: 261

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...