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

VPS Starter Arubacloud
0 głosów
305 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 113 wizyt
0 głosów
1 odpowiedź 240 wizyt
pytanie zadane 8 października 2022 w Python przez Ichbinda Nowicjusz (230 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...