pytanie - brak wyświetlania komunikatu

pytanie - brak wyświetlania komunikatu
TO
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 5 lat
  • Postów:2
0

cześć,
czy ktoś może powiedzieć mi co jest źle z tą formułą - liczba jest odnajdywana prawidłowo ale nie poawia się komunikat "zgadłeś"

from random import randint
for i in range(1):
los = randint(1,100)

odp = int(input("podaj liczbę "))

while odp != los:
if odp > los:
print ("za duża")
if odp < los:
print ("za mała")
if odp == los:
print ("zgadłeś")
odp = int(input("podaj liczbę "))

edytowany 1x, ostatnio: Ktos
SI
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 5 godzin
1

Bo warunek w while był spełniony, wiec if z == nigdy się nie wykona. Masz tu działającą wersję

Kopiuj
from random import randint

los = randint(1,100)
odp = int(input("podaj liczbę "))
while 1:
    if odp > los:
        print ("za duża")
    if odp < los:
        print ("za mała")
    if odp == los:
        print ("zgadłeś")
        break #tutaj kończy pętlę
    odp = int(input("podaj liczbę "))

edit: kod dajemy w tagach dostępnych pod </>, wtedy ma wcięcia jak u mnie. A te są w pythonie bardzo ważne

edytowany 3x, ostatnio: sig
TO
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 5 lat
  • Postów:2
0

Dzieki wielkie

SI
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 5 godzin
0

Tak chyba będzie czytelniej

Kopiuj
from random import randint

los = randint(1,100)
odp = 101
while odp != los:
    odp = int(input("podaj liczbę "))
    if odp > los:
        print ("za duża")
    if odp < los:
        print ("za mała")
    if odp == los:
        print ("zgadłeś")

ew hardcore-owo

Kopiuj
from random import randint
import sys

los = randint(1,100)
odp = sys.maxsize
while odp != los:
    odp = int(input("podaj liczbę "))
    if odp > los:
        print ("za duża")
    if odp < los:
        print ("za mała")
    if odp == los:
        print ("zgadłeś")

sys.maxsize - liczba z założenia większa od każdej liczby,

edytowany 2x, ostatnio: sig
Guaz
@sig: Zdecydowanie bardziej polecam float('inf') jakby już celować w największą liczbę. Będzie równe tylko innej nieskończoności, która nie przejdzie dla konwersji do int() :). ;;; @tomwol: Ten przykład aż się prosi o użycie konstrukcji elif oraz else, co prawda tutaj to nie ma znaczenia dla złożoności obliczeniowej/prędkości działania. Ale jest to kolejny przykład na którym możnaby się tego nauczyć :)
enedil
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 2 godziny
  • Postów:1027
0
sig napisał(a):

sys.maxsize - liczba z założenia większa od każdej liczby,

Co? przykładowo, sys.maxsize + 1 > sys.maxsize. Sprawdź sobie w interpreterze.

  • Rejestracja:około 6 lat
  • Ostatnio:ponad rok
0

W każdej iteracji robicie 3 porówniania. Also, dopuszczalna jest tylko jedna z możliwości i kod powinien to wyrażać.

odp = sys.maxsize

Tutaj chciałeś float('inf')/math.inf.

Guaz
Nie prościej po prostu float('nan') ?
SI
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 5 godzin
0

A nie lepiej z continue? Powinno być szybsze niż else if + else

Kopiuj
from random import randint


los = randint(1,100)
odp = los + 1
while 1:
    odp = int(input("podaj liczbę "))
    if odp > los:
        print ("za duża")
        continue
    if odp < los:
        print ("za mała")
        continue
    if odp == los:
        print ("zgadłeś")
        break
enedil
Zanim stwierdzisz, że coś jest szybsze, a coś wolniejsze, sprawdź profilerem, bo bez tego to póki co tylko poświęciłeś czytelność kodu.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.