Kontynuacja pętli aż do odgadnięcia liczby

0

Witam, otóż mam problem z pętlą, co zrobić by program po sprawdzeniu czy szukana_liczba i strzał są większe od 20, kontynuował pomijając kolejne wybieranie liczb, dopóki jej nie odgadniemy.
Gdyż na tym etapie, gdy wpiszemy liczbę za małą, bądź za dużą program wraca na początek i każe podawać liczbę od nowa, a jak wiadomo nie o to chodzi.
Podsyłam cały skrypt niżej, jakieś uwagi i oczywiście odpowiedzi na moje pytanie mile widziane,
prosiłbym o napisanie skryptu w miarę prostym językiem, gdyż nie kluczem jest przepisać, tylko się nauczyć.

PS: Skrypt na ten moment jest w budowie, bo jak widać nie ma nawet 2 gracza

x = input("Wprowadź imię gracza 1: ")
y = input("Wprowadź imię gracza 2: ")

p1 = 0

p2 = 0


while p1 != 5 or p1 != 5:
    szukana_liczba = int(input("Podaj liczbę, od 1 do 20, którą ma zgadnąć gracz: "))
    if szukana_liczba > 20:
        print("Liczba od 1 do 20!")
        continue
    strzał = int(input("Spróbuj odgadnąć liczbę: "))
    if strzał > 20:
        print("Liczba od 1 do 20!")
        continue
    elif strzał < szukana_liczba:
        print("Za mała")
        continue
    elif strzał > szukana_liczba:
        print("Za duża")
        continue
    elif strzał == szukana_liczba:
        print("Brawo, zdobywasz jeden punkt")
    p1 += 1
    print("Punktacja:")
    print("{} ma:".format(x),p1,"pkt")
0

Pobieranie liczby umieść tuż przed pętlą.

0
liczba = 30
while liczba > 20:
    liczba = int(input("podaj liczbę od 1 do 20"))
print("udało ci się wpisać", liczba)
0
while p1 != 5 or p1 != 5:

Chyba nie o taki warunek chodziło.

szukana_liczba = int(input("Podaj liczbę, od 1 do 20, którą ma zgadnąć gracz: "))

Ja tam bym użył random (czyt. niech komputer wylosuje).

Podejrzewam, że chcesz osiągnąć efekt podobny do tego - https://inventwithpython.com/chapter4.html
Rozważ wprowadzenie jakiegoś ogranicznika prób.

0

Poszukałem trochę i na podstawie innego projektu który zrekonstruowałem chce utworzyć swój własny, ma ktoś pomysł co mogę zrobić by gra toczyła się do 5 punktów ze strony p1 lub p2?

def Gra():
p1 = 0
p2 = 0

Strzał = 0
liczba_strzałów = 0

Liczba = int(input("Graczu pierwszy - wprowadź liczbę: "))
while Liczba < 1 or Liczba > 10:
    Liczba = int(input("Zła liczba, podaj prawidłową: "))
while Strzał != Liczba and liczba_strzałów < 5:
    Strzał = int(input("Graczu drugi - zgadnij: "))
    liczba_strzałów = liczba_strzałów + 1
if Strzał == liczba_strzałów:
    print("Gracz pierwszy wygrywa.")
    p1 = p1 + 1
else:
    print("Gracz drugi wygrywa.")
    p2 = p2 + 1

Gra()

0

Ta pętla którą miałeś była prawie dobra, tylko że zamiast OR powinno być AND, bo inaczej pętla będzie się wykonywać dopóki p1 oraz p2 == 5.

0

https://www.python.org/dev/peps/pep-0008/#function-names
Pozbądź się tego def Gra(), Liczba itp. To tak przy okazji.

Wydaje mi się, że chcesz osiągnąć coś w tym stylu:


def play_game():
  p1 = 0
  p2 = 0
  shots_taken = 0

  number = int(input("Graczu pierwszy - wprowadź liczbę od 1 do 20: "))
  while number < 1 or number > 20:
      number = int(input("Zła liczba, podaj prawidłową: "))
  while shots_taken < 3:
    shot = int(input("Graczu drugi - zgadnij: "))
    shots_taken += 1
     if shot < number:
       print ("Więcej")
     if shot > number:
       print ("Mniej")
    if shot  == number:
      break
  if shot != number:
    print("Gracz pierwszy wygrywa.")
    p1 += 1
  else:
    print("Gracz drugi wygrywa.")
    p2 +=  1
  return [p1,p2]      



points = [0,0]

while points[0] < 5 or points[1] < 5:
  points[0] += play_game()[0]
  points[1] += play_game()[1]
  if points[0] == 5 or points[1] == 5:
    break

print ("Gracz 1 ma punktów", points[0])
print ("Gracz 2 ma punktów", points[1])

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