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

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
362 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 156 wizyt
0 głosów
1 odpowiedź 463 wizyt
pytanie zadane 8 października 2022 w Python przez Ichbinda Nowicjusz (230 p.)

93,187 zapytań

142,203 odpowiedzi

322,023 komentarzy

62,513 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2581p. - dia-Chann
  2. 2537p. - Łukasz Piwowar
  3. 2528p. - Łukasz Eckert
  4. 2514p. - CC PL
  5. 2445p. - Łukasz Siedlecki
  6. 2443p. - rucin93
  7. 2252p. - Tomasz Bielak
  8. 2201p. - Michal Drewniak
  9. 2156p. - Marcin Putra
  10. 2152p. - Adrian Wieprzkowicz
  11. 2105p. - Mikbac
  12. 1941p. - Anonim 3619784
  13. 1733p. - rafalszastok
  14. 1480p. - Michał Telesz
  15. 1469p. - ssynowiec
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...