pytanie - brak wyświetlania komunikatu

Odpowiedz Nowy wątek
2019-05-05 17:06
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, 2019-05-05 18:14

Pozostało 580 znaków

2019-05-05 17:13
sig
1

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

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, 2019-05-05 17:16

Pozostało 580 znaków

2019-05-05 17:45
0

Dzieki wielkie

Pozostało 580 znaków

2019-05-05 17:57
sig
0

Tak chyba będzie czytelniej

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

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, 2019-05-05 18:03
@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ć :) - Guaz 2019-05-06 17:55

Pozostało 580 znaków

2019-05-05 19:42
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.

Pozostało 580 znaków

2019-05-06 14:03
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.

Nie prościej po prostu float('nan') ? - Guaz 2019-05-06 17:53

Pozostało 580 znaków

2019-05-06 18:07
sig
0

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

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
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. - enedil 2019-05-06 22:11

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0