• 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ę

Object Storage Arubacloud
0 głosów
307 wizyt
pytanie zadane 2 kwietnia 2019 w Python 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 2019 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 2019 przez sladewilson Nowicjusz (140 p.)
dziękuję

Podobne pytania

+1 głos
2 odpowiedzi 114 wizyt
0 głosów
1 odpowiedź 255 wizyt
pytanie zadane 8 października 2022 w Python przez Ichbinda Nowicjusz (230 p.)

92,539 zapytań

141,382 odpowiedzi

319,481 komentarzy

61,928 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...