Wątek przeniesiony 2019-01-19 00:41 z Edukacja przez somekind.

Python dla każdego - zadania.

1

Cześć wszystkim,

Jestem na etapie zmiany kierunku swojej kariery, a ponadto jest to mój pierwszy wpis na forum zatem proszę o wyrozumiałość jeśli palnę jakieś banalne czy wręcz śmieszne pytanie.

Jestem na etapie nauki Python'a i pod rękę wpadła mi książka z tytułu tego posta "Python dla każdego". Po każdym rozdziale autor przedstawia kilka zadań, dzięki którym można pobawić się kodem i zmajstrować coś bazując na wcześniej poznanych regułach, funkcjach itp. Wprawdzie w sieci można wybiórczo znaleźć odpowiedzi na wybrane pytania, ale w związku z tym, że przerabiam tą książke od samego początku to pozwoliłem sobie uruchomić taki temat, gdzie będę wrzucał swoje "rozwiązania" tych zadań. Kod zapewne nie jest pierwszej jakości, ponieważ samym językiem zacząłem się głębiej interesować od tygodnia lub dwóch, ale już coś tam potrafię naskrobać.

Jeśli to możliwe, to bardzo proszę tych bardziej doświadczonych programistów o wsparcie i ewentualne porady co do jakości kodu, zmian w nim lub po prostu czy widzą jakiś totalny fakap w danym rozwiązaniu. Oczywiście pozostałych forumowiczów też zachęcam do dyskusji, a jeśli ktoś z was jest na etapie rozwiązywania tych zadań - o wrzucanie swoich rozwiązań w tym temacie.

Rozdział 4, zadanie nr 4
Utwórz grę, w której komputer wybiera losowo słowo, które gracz musi odgadnąć. Komputer informuje gracza, ile liter znajduje się w wybranym słowie. Następnie gracz otrzymuje pięć szans na zadanie pytania, czy jakaś litera jest zawarta w tym słowie. Komputer może odpowiedzieć tylko „tak” lub „nie”. Potem gracz musi odgadnąć słowo.

#Gra, w której komputer wybiera losowe słowo, a gracz musi je odgadnąć

import random

#Najpierw tworzę krotkę z zestawieniem słów
words = ("karuzela", "autostrada", "pałac", "miasto", "doniczka", "pielucha", "bank", "stolica", "lodówka")

#Następnie komputer losuje z zestawu słów jedno
word = random.choice(words)

#Przypisuję zmienne
correct = word
tries = 0

#Rozpoczynamy grę
print("\t\tWitaj w grze 'Słowny Mix'!")
print("Wybrałem dla Ciebie pewne słowo, a Twoim zadaniem będzie je odgadnąć.")
print("Możesz skorzystać z 5 szans i spytać mnie, czy dana litera zawiera się w słowie.")
print("\nPodpowiem tylko, że słowo ma następującą ilość liter: ", len(correct))

choice1 = input("\nSpróbujesz odgadnąć słowo już teraz? tak/nie ")

while choice1 == "nie" and tries<5:
    litera = input("\nWpisz literę, a ja odpowiem, czy zawiera się ona w tym słowie: ")
    if litera in correct:
        print("\nTak, litera", litera, "znajduje się w tym słowie.")
    else:
        print("\nNie, litera", litera, "nie znajduje się w tym słowie.")
    choice2 = input("\nCzy chcesz spytać o kolejną literę?")
    if choice2 == "tak" and tries <5:
        tries += 1
    else:
        break
    if tries > 4:
        input("\nPrzykro mi, wykorzystałeś(aś) już wszystkie 5 prób podpowiedzi. Musisz odpowiedzieć. Co to za słowo? ")

answer = input("\nA więc co to za słowo? ")
if answer == correct:
    print("\n\nGratulacje! Udało Ci się odpowiedzieć po", tries, "podpowiedziach!")

print("\n\nTo nie to słowo. Poprawne słowo to:", correct)
print("\nKoniec gry!")

0

Na szybko, to komunikat o niewłaściwym słowie wyświetli się zawsze, nawet jak zgadniesz poprawny wyraz.

1
#Następnie komputer losuje z zestawu słów jedno
word = random.choice(words)
 
#Przypisuję zmienne
correct = word

Mnożysz byty ponad potrzebę. Wystarczy correct = random.choice(words).

if tries > 4:
        input("\nPrzykro mi, wykorzystałeś(aś) już wszystkie 5 prób podpowiedzi. Musisz odpowiedzieć. Co to za słowo? ")

Tutaj pytasz o słowo, ale nic z tego nie wynika. Gracz wpisuje słowo, a potem dostaje pytanie "A więc co to za słowo?"

0

Dzięki, poprawiłem zgodnie z uwagami:

#Gra, w której komputer wybiera losowe słowo, a gracz musi je odgadnąć

import random

#Najpierw tworzę krotkę z zestawieniem słów
words = ("karuzela", "autostrada", "pałac", "miasto", "doniczka", "pielucha", "bank", "stolica", "lodówka")

#Następnie komputer losuje z zestawu słów jedno (prawidłowa odpowiedź)
correct = random.choice(words)
tries = 0

#Rozpoczynamy grę
print("\t\tWitaj w grze 'Słowny Mix'!")
print("Wybrałem dla Ciebie pewne słowo, a Twoim zadaniem będzie je odgadnąć.")
print("Możesz skorzystać z 5 szans i spytać mnie, czy dana litera zawiera się w słowie.")
print("\nPodpowiem tylko, że słowo ma następującą ilość liter: ", len(correct))

choice1 = input("\nSpróbujesz odgadnąć słowo już teraz? tak/nie ")
if choice1 == "tak":
    answer = input("\nA więc co to za słowo? ")

while choice1 == "nie" and tries<5:
    litera = input("\nWpisz literę, a ja odpowiem, czy zawiera się ona w tym słowie: ")
    if litera in correct:
        print("\nTak, litera", litera, "znajduje się w tym słowie.")
    else:
        print("\nNie, litera", litera, "nie znajduje się w tym słowie.")
    choice2 = input("\nCzy chcesz spytać o kolejną literę?")
    if choice2 == "tak" and tries <5:
        tries += 1
    else:
        answer = input("\nA więc co to za słowo? ")
        break
    if tries > 4:
        answer = input("\nPrzykro mi, wykorzystałeś(aś) już wszystkie 5 prób podpowiedzi. Musisz odpowiedzieć. Co to za słowo? ")

if answer == correct:
    print("\n\nGratulacje! Udało Ci się odpowiedzieć po", tries, "podpowiedziach!")
else:
    print("\n\nTo nie to słowo. Poprawne słowo to:", correct)
    
print("\nKoniec gry!")

Jeśli chodzi o uwagę związaną z przypisaniem zmiennej "correct = word" to chyba nawyk początkującego. W książce wszystko rozpisują krok po kroku i pewnie stąd się to wzięło...

0
  1. Fajnie, ze probujesz pisac po angielsku nazwy zmiennych, ale staraj sie byc konsekwentym (zapomniales o zmiennej "litera")
  2. Czy sprawdzanie prób w warunku

while choice1 == "nie" and tries<5:

    if choice2 == "tak" and tries <5:

Jest potrzebne, gdy masz

    if tries > 4:
        answer = input("\nPrzykro mi, wykorzystałeś(aś) już wszystkie 5 prób podpowiedzi. Musisz odpowiedzieć. Co to za słowo? ")

Mozesz dodac tam break i wyjdzie to samo, a komputer mniej warunkow do sprawdzenia ma? Sprawdz

0

Faktycznie, śmiga identycznie bez tego warunku :) dzięki za pomoc. "To są właśnie te detale" jak to mawia klasyk.

#Gra, w której komputer wybiera losowe słowo, a gracz musi je odgadnąć

import random

#Najpierw tworzę krotkę z zestawieniem słów
words = ("karuzela", "autostrada", "pałac", "miasto", "doniczka", "pielucha", "bank", "stolica", "lodówka")

#Następnie komputer losuje z zestawu słów jedno (prawidłowa odpowiedź)
correct = random.choice(words)
tries = 0

#Rozpoczynamy grę
print("\t\tWitaj w grze 'Słowny Mix'!")
print("Wybrałem dla Ciebie pewne słowo, a Twoim zadaniem będzie je odgadnąć.")
print("Możesz skorzystać z 5 szans i spytać mnie, czy dana litera zawiera się w słowie.")
print("\nPodpowiem tylko, że słowo ma następującą ilość liter: ", len(correct))

choice1 = input("\nSpróbujesz odgadnąć słowo już teraz? tak/nie ")
if choice1 == "tak":
    answer = input("\nA więc co to za słowo? ")

while choice1 == "nie":
    letter = input("\nWpisz literę, a ja odpowiem, czy zawiera się ona w tym słowie: ")
    if letter in correct:
        print("\nTak, litera", letter, "znajduje się w tym słowie.")
    else:
        print("\nNie, litera", letter, "nie znajduje się w tym słowie.")
    choice2 = input("\nCzy chcesz spytać o kolejną literę?")
    if choice2 == "tak":
        tries += 1
    else:
        answer = input("\nA więc co to za słowo? ")
    if tries > 4:
        answer = input("\nPrzykro mi, wykorzystałeś(aś) już wszystkie 5 prób podpowiedzi. Musisz odpowiedzieć. Co to za słowo? ")
        break
if answer == correct:
    print("\n\nGratulacje! Udało Ci się odpowiedzieć po", tries, "podpowiedziach!")
else:
    print("\n\nTo nie to słowo. Poprawne słowo to:", correct)
    
print("\nKoniec gry!")
0

Wrzucam kolejne zadanie z prośbą o uwagi.

Rozdział 5, zadanie nr 1
Utwórz program, który wypisuje listę słów w przypadkowej kolejności. Program powinien wypisać wszystkie słowa bez żadnych powtórzeń.

#Program wyświetla listę elementów w losowej kolejności
#Program nie może powtórzyć żadnego elementu

import random

elements = ["piłka nożna", "siatkówka", "skoki narciarskie", "żużel", "hokej"]

print("Dyscypliny sportowe to m.in.:")

while elements:
    random_item = random.choice(elements)
    print(random_item)
    elements.remove(random_item)

input("\nWciśnij Enter, aby zakończyć program.")

PS. od kilku godzin męczę się nad zadaniem nr 2 z rozdziału 5. Czy ktoś może mi powiedzieć, czy jest opcja wyświetlenia słownika jako listy tj. od nowej linii każda pozycja z parametrem? Wklejam też treść dla chcących pomóc:
Napisz program Kreator postaci do gry z podziałem na role. Gracz powinien otrzymać pulę 30 punktów, którą może spożytkować na cztery atrybuty: siła, zdrowie, mądrość i zręczność. Gracz powinien mieć możliwość przeznaczania punktów z puli na dowolny atrybut, jak również możliwość odbierania punktów przypisanych do atrybutu i przekazywania ich z powrotem do puli.

Nie jestem pewien czy w tym zadaniu mogę użyć listy czy powinienem użyć słownika?

0
Krispekowy napisał(a):

Wrzucam kolejne zadanie z prośbą o uwagi.

Rozdział 5, zadanie nr 1
Utwórz program, który wypisuje listę słów w przypadkowej kolejności. Program powinien wypisać wszystkie słowa bez żadnych powtórzeń.

#Program wyświetla listę elementów w losowej kolejności
#Program nie może powtórzyć żadnego elementu

import random

elements = ["piłka nożna", "siatkówka", "skoki narciarskie", "żużel", "hokej"]

print("Dyscypliny sportowe to m.in.:")

while elements:
    random_item = random.choice(elements)
    print(random_item)
    elements.remove(random_item)

input("\nWciśnij Enter, aby zakończyć program.")

Jak najbardziej poprawne, jedyne moje uwagi to:

  • Po hastagu zostaw spację i dopiero pisz komentarz, x = 5 # o, w ten sposob
  • Możesz użyć random.shuffle(arr) do pomieszania tablicy w miejscu, lub random.sample(arr, len(arr)) by stworzyć nową tablicę z pomieszanymi elementami. Czytaj dokładniej dokumentację, bo python ma bardzo rozbudowaną bibliotekę standardową i można sobie dzięki niej zaoszczędzić pracy :)

PS. od kilku godzin męczę się nad zadaniem nr 2 z rozdziału 5. Czy ktoś może mi powiedzieć, czy jest opcja wyświetlenia słownika jako listy tj. od nowej linii każda pozycja z parametrem? Wklejam też treść dla chcących pomóc:
Napisz program Kreator postaci do gry z podziałem na role. Gracz powinien otrzymać pulę 30 punktów, którą może spożytkować na cztery atrybuty: siła, zdrowie, mądrość i zręczność. Gracz powinien mieć możliwość przeznaczania punktów z puli na dowolny atrybut, jak również możliwość odbierania punktów przypisanych do atrybutu i przekazywania ich z powrotem do puli.

Nie jestem pewien czy w tym zadaniu mogę użyć listy czy powinienem użyć słownika?

Ja bym zrobił osobną klasę, ale w zadaniu pewnie chodzi o słownik z kluczami 'sila', 'madrosc', 'zdrowie', 'zresznosc'. Po dictcie możesz iterować w ten sposób:

d = {
    'sila': 20,
    'zresznosc': 5,
}
for k, v in d.items():
    print(f'pod kluczem {k} jest wartosc {v}')

P.S. bardzo propsuję, że tak czytelnie prowadzisz temat, oraz, że zamieszczasz swój kod zamiast prosić o gotowca :)

0

Jak najbardziej poprawne, jedyne moje uwagi to:

  • Po hastagu zostaw spację i dopiero pisz komentarz, x = 5 # o, w ten sposob
  • Możesz użyć random.shuffle(arr) do pomieszania tablicy w miejscu, lub random.sample(arr, len(arr)) by stworzyć nową tablicę z pomieszanymi elementami. Czytaj dokładniej dokumentację, bo python ma bardzo rozbudowaną bibliotekę standardową i można sobie dzięki niej zaoszczędzić pracy :)

Pewnie dlatego nie użyłem tych metod, bo w książce nie było o nich mowy póki co, a za dokumentację pythona jeszcze się nie zabrałem. Wielkie dzięki za pomoc.

Ja bym zrobił osobną klasę, ale w zadaniu pewnie chodzi o słownik z kluczami 'sila', 'madrosc', 'zdrowie', 'zresznosc'. Po dictcie możesz iterować w ten sposób:

d = {
    'sila': 20,
    'zresznosc': 5,
}
for k, v in d.items():
    print(f'pod kluczem {k} jest wartosc {v}')

P.S. bardzo propsuję, że tak czytelnie prowadzisz temat, oraz, że zamieszczasz swój kod zamiast prosić o gotowca :)

Dzięki za pomoc. Zadanie poprzedza rozdział o listach i słownikach, zatem wydaje mi się, że klas tutaj nie oczekują (poza tym jeszcze nie wiem z czym to się je:) ). Dzisiaj wrzucę rozwiązanie tego zadania.

0

Rozdział 5, zadanie nr 2
Napisz program Kreator postaci do gry z podziałem na role. Gracz powinien otrzymać pulę 30 punktów, którą może spożytkować na cztery atrybuty: siła, zdrowie, mądrość i zręczność. Gracz powinien mieć możliwość przeznaczania punktów z puli na dowolny atrybut, jak również możliwość odbierania punktów przypisanych do atrybutu i przekazywania ich z powrotem do puli.

# Program Kreator postaci

p = {"siła": 0,
"zdrowie": 0,
"mądrość": 0,
"zręczność": 0}
statment = ["siła",
          "wytrzymałość",
          "charyzma",
          "obrona",
          "inteligencja"]
jackpot = int(30)

print("\nTwoja postać może otrzymać 30 punktów umiejętności.",
          "\n\nDo wykorzystania pozostało Ci ", jackpot, "umiejętności.")

print("Punkty możesz przypisywać do następujących parametrów bohatera:")
for k, v in p.items():
    print(f"{k}  \t= {v}")

while jackpot > 0:
    choice = input("\nPodaj parametr, który chcesz zmodyfikować: ")
    if choice == "siła":
        point = int(input("\nA teraz podaj liczbę punktów, którą chcesz do niego przypisać (jeśli chcesz zmniejszyć punkty danej umiejętności, wstaw przed cyfrą znak '-'): "))
        p[choice] = point
        jackpot = jackpot - point
        print("Twój parametr", choice, "zwiększył się o", point)
    elif choice == "zdrowie":
        point = int(input("\nA teraz podaj liczbę punktów, którą chcesz do niego przypisać (jeśli chcesz zmniejszyć punkty danej umiejętności, wstaw przed cyfrą znak '-'): "))
        p[choice] = point
        jackpot = jackpot - point
        print("Twój parametr", choice, "zwiększył się o", point)
    elif choice == "mądrość":
        point = int(input("\nA teraz podaj liczbę punktów, którą chcesz do niego przypisać (jeśli chcesz zmniejszyć punkty danej umiejętności, wstaw przed cyfrą znak '-'): "))
        p[choice] = point
        jackpot = jackpot - point
        print("Twój parametr", choice, "zwiększył się o", point)
    elif choice == "zręczność":
        point = int(input("\nA teraz podaj liczbę punktów, którą chcesz do niego przypisać (jeśli chcesz zmniejszyć punkty danej umiejętności, wstaw przed cyfrą znak '-'): "))
        p[choice] = point
        jackpot = jackpot - point
        print("Twój parametr", choice, "zwiększył się o", point)
    else:
        print("Podałeś niepoprawną nazwę parametru. Wprowadź ją raz jeszcze.")
        

print("\n\nWykorzystałeś już wszystkie punkty, Twoja postać prezentuje się następująco:")
for k, v in p.items():
    print(f"{k}  \t= {v}")

input("\n\nWciśnij ENTER aby zakończyć.")

Są dwie rzeczy, których nie mogę rozwiąząć:

  1. Jak ograniczyć pulę od 0 do 30 punktów? Chodzi o to, że podając np. 20 pkt siła, pętla się powtarza, a gdy podam kolejne 20 pkt, to pętla się przerywa, ale do parametru dodano 20 pkt mimo iż w puli zostało 30.
  2. Jak ograniczyć wybór użytkownika, aby do parametrów (siła, mądrość itp.) nie mógł przypisywać ujemnych wartości. Chodzi o to, aby uniknąć sytuacji "siła: -20", a "mądrość: 50"?
0

Twój program nie do końca robi to, co powinien. Powinieneś zwiększać wartość parametru, a ty ją przypisujesz. Jak podam dwa razy "siła" i "20", wynikiem będzie

siła  	= 20
zdrowie  	= 0
mądrość  	= 0
zręczność  	= 0

Protip: użyj nazwy podanego parametru jako klucza do słownika, to nie będziesz musiał 4 razy klepać tego samego kodu :) w sumie już to robisz. Po co każdy przypadek rozpatrujesz osobno?

jackpot = int(30)

To pewnie jakaś pozostałość po castowaniu inputu, ale wystarczy napisać jackpot = 30 i python będzie wiedział, że to int.

p = {"siła": 0,
"zdrowie": 0,
"mądrość": 0,
"zręczność": 0}
statment = ["siła",
"wytrzymałość",
"charyzma",
"obrona",
"inteligencja"]


Popraw formatowanie. To nie jest błąd składniowy, ale imo warto się od początku trzymać dobrych praktyk. Wyrównuj kolejne elementy listy/dicta do poprzednich (1), albo zaczynaj wszystko w nowej linii (2, preferowana przeze mnie):
(1)
```python
p = {"siła": 0,
     "zdrowie": 0,
     "mądrość": 0,
     "zręczność": 0}
statment = ["siła",
            "wytrzymałość",
            "charyzma",
            "obrona",
            "inteligencja"]

(2)

p = {
    "siła": 0,
    "zdrowie": 0,
    "mądrość": 0,
    "zręczność": 0,
}
statment = [
    "siła",
    "wytrzymałość",
    "charyzma",
    "obrona",
    "inteligencja",
]
  1. Jak ograniczyć pulę od 0 do 30 punktów? Chodzi o to, że podając np. 20 pkt siła, pętla się powtarza, a gdy podam kolejne 20 pkt, to pętla się przerywa, ale do parametru dodano 20 pkt mimo iż w puli zostało 30.

Możesz użyć funkcji min żeby wiedzieć, ile punktów faktycznie powinieneś dodać, uwzględniając limit, np. jeśli zostało 10 punktów do rozdania, a użytkownik wpisze 20, to min(limit, user_input) zwróci 10.

  1. Jak ograniczyć wybór użytkownika, aby do parametrów (siła, mądrość itp.) nie mógł przypisywać ujemnych wartości. Chodzi o to, aby uniknąć sytuacji "siła: -20", a "mądrość: 50"?

Przed przetworzeniem polecenia użytkownika sprawdź wartość w słowniku pod podanym kluczem i upewnij się, że nie zejdzie poniżej zera.

0

Tak myślałem, że czeka mnie jeszcze sporo pracy. Chyba muszę powtórzyć rozdział, bo wydaje mi się, że nie do końca rozumiem ideę kluczy, krotek i list.

0

Po poniższej modyfikacji i przypisaniu do kluczy zmiennych nic się nie dzieje. Użytkownik wprowadza parametr 20, a mimo to pozostaje on bez zmian i wynosi "0". Chociaż w momencie wprowadzenia wartości i kiedy dodałem po inkrementacji "print(s)" wartość wynosiła tyle ile faktycznie wprowadziłem. Dopiero w momencie pętli for, wyświetlają się same zera.

Czy ktoś wie gdzie popełniam błąd?

# Program Kreator postaci

# Przypisuję wartości 0 do każdego z parametrów
s = 0
h = 0
m = 0
z = 0

# Tworzę słownik
p = {
    "siła": s,
    "zdrowie": h,
    "mądrość": m,
    "zręczność": z
    }
jackpot = 30

print("\nTwoja postać może otrzymać 30 punktów umiejętności.",
          "\n\nDo wykorzystania pozostało Ci ", jackpot, "umiejętności.")

print("Punkty możesz przypisywać do następujących parametrów bohatera:")
for k, v in p.items():
    print(f"{k}  \t= {v}")

while jackpot > 0:
    choice = input("\nPodaj parametr, który chcesz zmodyfikować: ")
    point = min(jackpot,int(input("\nA teraz podaj liczbę punktów, którą chcesz do niego przypisać (jeśli chcesz zmniejszyć punkty danej umiejętności, wstaw przed cyfrą znak '-'): ")))
    if choice == "siła":
        s += point
    elif choice == "zdrowie":
        h += point
    elif choice == "mądrość":
        m += point
    elif choice == "zręczność":
        h += point
    else:
        print("Podałeś niepoprawną nazwę parametru. Wprowadź ją raz jeszcze.")

    jackpot = jackpot - point
    print("Twój parametr", choice, "zmienił się o", point)
    print("Twój bohater prezentuje się następująco: ")

    for k, v in p.items():
        print(f"{k}  \t= {v}")

print("\n\nWykorzystałeś już wszystkie punkty umiejętności.")

input("\n\nWciśnij ENTER aby zakończyć.")
    
1

W pythonie proste typy (int, str, float itp) są kopiowane, więc twój zapis

s = 0
h = 0
m = 0
z = 0
 
# Tworzę słownik
p = {
    "siła": s,
    "zdrowie": h,
    "mądrość": m,
    "zręczność": z
    }

działa tak samo, jak

s = 0
h = 0
m = 0
z = 0
 
# Tworzę słownik
p = {
    "siła": 0,
    "zdrowie": 0,
    "mądrość": 0,
    "zręczność": 0
    }

Moja rada: pozbądź się tych zmiennych pomocniczych (s, h, m, z) i działaj tylko na słowniku.

0

Hej. Udało mi się trochę skrócić i uporządkować kod. Natomiast nadal nie mam bladego pojęcia jak "zablokować" wartości w słowniku, aby użytkownik nie mógł wprowadzić ujemnego parametru, po to aby podwyższyć inne...

# Program Kreator postaci

# Tworzę słownik
p = {
    "siła": 0,
    "zdrowie": 0,
    "mądrość": 0,
    "zręczność": 0
    }

# Zmiennej przypisuję ilość maksymalnych punktów w puli
jackpot = 30

print("\nTwoja postać może otrzymać 30 punktów umiejętności.")

print("\nPunkty możesz przypisywać do następujących parametrów bohatera:")

# Wyświetlam listę umiejętności
for k, v in p.items():
    print(f"{k}  \t= {v}")

# Rozpoczynamy modyfikację parametrów
while jackpot > 0:
    choice = input("\nPodaj parametr, który chcesz zmodyfikować: ")
    if choice in p:
        point = min(jackpot,int(input("\nA teraz podaj liczbę punktów, którą chcesz do niego przypisać(jeśli chcesz zmniejszyć punkty danej umiejętności, wstaw przed cyfrą znak '-'): ")))
        p[choice] += point
        jackpot = jackpot - point
        print("Twój parametr", choice, "zmienił się o", point)
    else:
        print("Podałeś NIEPOPRAWNĄ nazwę parametru.")
    
    print("Twój bohater prezentuje się następująco: ")
    for k, v in p.items():
        print(f"{k}  \t= {v}")
    print("\n\nDo wykorzystania pozostało Ci ", jackpot, "umiejętności.")
        
# Informacja dla użytkownika, że wykorzystał już wszystkie punkty umiejętności
print("\n\nWykorzystałeś już wszystkie punkty umiejętności.")

input("\n\nWciśnij ENTER aby zakończyć.")

0

Przed zrobieniem zmiany w słowniku (p[choice] += point) sprawdź, czy p[choice] + point jest większe/równe zeru i tylko wtedy wykonuj resztę kodu.

0

Dzięki. Myślę, że teraz powinno być ok. Chociaż testując program, fajnie byłoby, gdyby po rozdaniu wszystkich umiejętności była możliwość powrotu do modyfikacji parametrów.

# Program Kreator postaci

# Tworzę słownik
p = {
    "siła": 0,
    "zdrowie": 0,
    "mądrość": 0,
    "zręczność": 0
    }

# Zmiennej przypisuję ilość maksymalnych punktów w puli
jackpot = 30

print("\nTwoja postać może otrzymać 30 punktów umiejętności.")

print("\nPunkty możesz przypisywać do następujących parametrów bohatera:")

# Wyświetlam listę umiejętności
for k, v in p.items():
    print(f"{k}  \t= {v}")

# Rozpoczynamy modyfikację parametrów
while jackpot > 0:
    choice = input("\nPodaj parametr, który chcesz zmodyfikować: ")
    if choice in p:
        point = min(jackpot,int(input("\nPodaj liczbę punktów, o którą chcesz zwiększyć bądz zmniejszyć (wstaw '-' przed cyfrą) parametr: ")))
        if (p[choice] + point) >= 0:
            p[choice] += point
            jackpot = jackpot - point
            print("Twój parametr", choice, "zmienił się o", point)
        else:
            print("Parametr nie może być mniejszy od 0!")
    else:
        print("Podałeś NIEPOPRAWNĄ nazwę parametru.")
    
    print("Twój bohater prezentuje się następująco: ")
    for k, v in p.items():
        print(f"{k}  \t= {v}")
    print("\n\nDo wykorzystania pozostało Ci ", jackpot, "umiejętności.")
        
# Informacja dla użytkownika, że wykorzystał już wszystkie punkty umiejętności
print("\n\nWykorzystałeś już wszystkie punkty umiejętności.")

input("\n\nWciśnij ENTER aby zakończyć.")
0

Rozdział 5, zadanie nr 3
Napisz program Kto jest twoim tatą?, który umożliwia użytkownikowi wprowadzenie imienia i nazwiska osoby płci męskiej i przedstawia imię i nazwisko jej ojca. (Możesz dla zabawy wykorzystać nazwiska celebrytów, osób fikcyjnych lub nawet postaci historycznych). Umożliw użytkownikowi dodawanie, wymianę i usuwanie par syn-ojciec.

# Program "Kto jest Twoim tatą?"
# Program umożliwia użytkownikowi wprowadzenie imienia i nazwiska mężczyzny
# Następnie program wyświetla imię i nazwisko jego ojca
# Dodatkowo użytkownik może modyfikować, dodawać lub usuwać pary syn-ojciec

f = {
    "Leonardo DiCaprio" : "George DiCaprio",
    "Conor McGregor" : "Tony McGregor",
    "Johnny Deep" : "John Christopher Depp",
    "Brad Pitt" : "William Alvin Pitt",
    "Waldemar Kiepski" : "Ferdynand Kiepski"
    }

choice = None
while choice != "0":

    print(
        """
        Sprawdź kto jest Twoim tatą!

        0 - zakończ
        1 - znajdź tatę
        2 - dodaj nową parę syn-ojciec
        3 - 'zmień' ojca
        4 - usuń parę syn-ojciec
        """
        )

    choice = input("Wybieram: ")
    print()

    # Wyjdź z gry
    if choice == "0":
        print("Do zobaczenia!")

    # Znajdź tatę
    elif choice == "1":
        son = input("Podaj imię i nazwisko syna: ")
        if son in f:
            father = f[son]
            print("\nOjcem", son, "jest", father)
        else:
            print("\nNiestety nie znam ojca osoby:", son)

    # Dodaj parę syn-ojciec
    elif choice == "2":
        son = input("Wprowadź imię i nazwisko syna: ")
        if son not in f:
            father = input("Wprowadź imię i nazwisko ojca: ")
            f[son] = father
            print("\nNowa para syn-ojciec zostałą dodana do bazy.")
        else:
            print(son, "już istnieje w bazie!")

    # Zmień ojca
    elif choice == "3":
        son = input("Wprowadź imię i nazwisko syna: ")
        if son in f:
             father = input("Wprowadź imię i nazwisko nowego ojca: ")
             f[son] = father
             print(son, "ma już nowego ojca! Jest nim", father)
        else:
            print("\nNiestety nie znam ojca tej osoby:", son)

    # Usuń parę syn-ojciec
    elif choice == "4":
        son = input("Wprowadź imię i nazwisko syna: ")
        if son in f:
            del f[son]
            print("\nSyn i ojciec zostali usunięci z bazy.")
        else:
            print("\nNie mogę tego wykonać! Osoby o tym nazwisku nie ma w bazie.")

    # Nieznany wybór
    else:
        print("Niestety,", choice, "jest nieprawidłowym wyborem.")

input("\n\nAby zakończyć program, naciśnij klawisz Enter.")
0

Jest całkiem spoko. Poczytaj o formatowaniu stringów i staraj się go używać, nawet do printów. Z takich pierdół to klamra zamykająca dicta (około 10 linijki) nie powinna być zindentowana. Treść multi-line stringa też możesz wyrównać do lewej, bo jest niepotrzebnie wcięty w programie.

0

Czy do każdego klucza w słowniku może być przypisanych więcej definicji? W kolejnym zadaniu proszą mnie, aby rozbudować ten kod, poprzez dodanie opcji, która umożliwi użytkownikowi wprowadzenie imienia i (lub) nazwiska jakiejś osoby i uzyskanie odpowiedzi, kto jest jej dziadkiem :)

Ok. Rozwiązałem to inaczej, chociaż nie wiem czy autorowi zadania o to chodziło.

Rozdział 5, zadanie nr 4
Udoskonal program Kto jest moim tatą? poprzez dodanie opcji, która umożliwi użytkownikowi wprowadzenie imienia i (lub) nazwiska jakiejś osoby i uzyskanie odpowiedzi, kto jest jej dziadkiem. Twój program powinien nadal wykorzystywać tylko jeden słownik par syn-ojciec. Pamiętaj, aby włączyć do swojego słownika kilka pokoleń, tak aby możliwe było tego rodzaju dopasowanie.

# Program "Kto jest Twoim tatą?"
# Program umożliwia użytkownikowi wprowadzenie imienia i nazwiska mężczyzny
# Następnie program wyświetla imię i nazwisko jego ojca
# Dodatkowo użytkownik może modyfikować, dodawać lub usuwać pary syn-ojciec

f = {
    "Leonardo DiCaprio" : "George DiCaprio",
    "George DiCaprio" : "Older George DiCaprio",
    "Conor McGregor" : "Tony McGregor",
    "Tony McGregor" : "Older Tony McGregor",
    "Johnny Deep" : "John Christopher Depp",
    "John Christopher Depp" : "Older John Christopher Depp",
    "Brad Pitt" : "William Alvin Pitt",
    "William Alvin Pitt" : "Older William Alvin Pitt",
    "Waldemar Kiepski" : "Ferdynand Kiepski",
    "Ferdynand Kiepski" : "Older Ferdynand Kiepski"
    }

choice = None
while choice != "0":

    print(
        """
        Sprawdź kto jest Twoim tatą (lub dziadkiem)!

        0 - zakończ
        1 - znajdź tatę
        2 - dodaj nową parę syn-ojciec
        3 - 'zmień' ojca
        4 - usuń parę syn-ojciec
        5 - [Nowość!] znajdź dziadka
        """
        )

    choice = input("Wybieram: ")
    print()

    # Wyjdź z gry
    if choice == "0":
        print("Do zobaczenia!")

    # Znajdź tatę
    elif choice == "1":
        son = input("Podaj imię i nazwisko syna: ")
        if son in f:
            father = f[son]
            print("\nOjcem", son, "jest", father)
        else:
            print("\nNiestety nie znam ojca osoby:", son)

    # Dodaj parę syn-ojciec
    elif choice == "2":
        son = input("Wprowadź imię i nazwisko syna: ")
        if son not in f:
            father = input("Wprowadź imię i nazwisko ojca: ")
            f[son] = father
            print("\nNowa para syn-ojciec zostałą dodana do bazy.")
        else:
            print(son, "już istnieje w bazie!")

    # Zmień ojca
    elif choice == "3":
        son = input("Wprowadź imię i nazwisko syna: ")
        if son in f:
             father = input("Wprowadź imię i nazwisko nowego ojca: ")
             f[son] = father
             print(son, "ma już nowego ojca! Jest nim", father)
        else:
            print("\nNiestety nie znam ojca tej osoby:", son)

    # Usuń parę syn-ojciec
    elif choice == "4":
        son = input("Wprowadź imię i nazwisko syna: ")
        if son in f:
            del f[son]
            print("\nSyn i ojciec zostali usunięci z bazy.")
        else:
            print("\nNie mogę tego wykonać! Osoby o tym nazwisku nie ma w bazie.")

    # Znajdź dziadka
    elif choice == "5":
        grandson = input("Wprowadź imię i nazwisko osoby, której dziadka chcesz znaleźć: ")
        if grandson in f:
            son = f[grandson]
            father = f[son]
            print("\nDziadkiem", grandson, "jest", father)
        else:
            print("\nNiestety nie znam dziadka osoby:", grandson)
            

    # Nieznany wybór
    else:
        print("Niestety,", choice, "jest nieprawidłowym wyborem.")

input("\n\nAby zakończyć program, naciśnij klawisz Enter.")
    
0

Wydaje mi się, że o to chodziło - znaleźć ojca ojca. Tylko, że twój program się wysypie, jeśli podasz imię, które nie ma zdefiniowanego dziadka. Zamiast sprawdzać if x in y, możesz użyć dict.get

0

Rozdział 6, zadanie nr 1
Popraw funkcję ask_number() w taki sposób, aby mogła być wywoływana z wartością kroku. Spraw, aby domyślną wartością kroku była liczba 1.

Tutaj chyba potrzeba nieco objaśnień, dla tych co książki nie czytali (pomijam fakt, że nie do końca rozumiem o co chodzi autorowi w tym pytaniu).

W rozdziale 6 autor porusza po raz pierwszy kwestię funkcji. Rozdział finalnie kończy się zaprogramowaniem gry pod nazwą "Kółko i krzyżyk", której kod poniżej wklejam. Powyższe pytanie dotyczy właśnie kodu poniżej.

# Kółko i krzyżyk
# Komputer gra w kółko i krzyżyk przeciwko człowiekowi
   
# stałe globalne
X = "X"
O = "O"
EMPTY = " "
TIE = "TIE"
NUM_SQUARES = 9


def display_instruct():
    """Wyświetl instrukcję gry."""  
    print(
    """
    Witaj w największym intelektualnym wyzwaniu wszech czasów, jakim jest
    gra 'Kółko i krzyżyk'. Będzie to ostateczna rozgrywka między Twoim
    ludzkim mózgiem a moim krzemowym procesorem.  

    Swoje posunięcie wskażesz poprzez wprowadzenie liczby z zakresu 0 - 8.
    Liczba ta odpowiada pozycji na planszy zgodnie z poniższym schematem:
    
                    0 | 1 | 2
                    ---------
                    3 | 4 | 5
                    ---------
                    6 | 7 | 8

    Przygotuj się, Człowieku.  Ostateczna batalia niebawem się rozpocznie. \n
    """
    )


def ask_yes_no(question):
    """Zadaj pytanie, na które można odpowiedzieć tak lub nie."""
    response = None
    while response not in ("t", "n"):
        response = input(question).lower()
    return response


def ask_number(question, low, high, step):
    """Poproś o podanie liczby z odpowiedniego zakresu."""
    response = None
    while response not in range(low, high, step):
        response = int(input(question))
    return response


def pieces():
    """Ustal, czy pierwszy ruch należy do gracza, czy do komputera."""
    go_first = ask_yes_no("Czy chcesz mieć prawo do pierwszego ruchu? (t/n): ")
    if go_first == "t":
        print("\nWięc pierwszy ruch należy do Ciebie.  Będzie Ci potrzebny.")
        human = X
        computer = O
    else:
        print("\nTwoja odwaga Cię zgubi... Ja wykonuję pierwszy ruch.")
        computer = X
        human = O
    return computer, human


def new_board():
    """Utwórz nową planszę gry."""
    board = []
    for square in range(NUM_SQUARES):
        board.append(EMPTY)
    return board


def display_board(board):
    """Wyświetl planszę gry na ekranie."""
    print("\n\t", board[0], "|", board[1], "|", board[2])
    print("\t", "---------")
    print("\t", board[3], "|", board[4], "|", board[5])
    print("\t", "---------")
    print("\t", board[6], "|", board[7], "|", board[8], "\n")


def legal_moves(board):
    """Utwórz listę prawidłowych ruchów."""
    moves = []
    for square in range(NUM_SQUARES):
        if board[square] == EMPTY:
            moves.append(square)
    return moves


def winner(board):
    """Ustal zwycięzcę gry."""
    WAYS_TO_WIN = ((0, 1, 2),
                   (3, 4, 5),
                   (6, 7, 8),
                   (0, 3, 6),
                   (1, 4, 7),
                   (2, 5, 8),
                   (0, 4, 8),
                   (2, 4, 6))
    
    for row in WAYS_TO_WIN:
        if board[row[0]] == board[row[1]] == board[row[2]] != EMPTY:
            winner = board[row[0]]
            return winner

    if EMPTY not in board:
        return TIE

    return None


def human_move(board, human):
    """Odczytaj ruch człowieka."""  
    legal = legal_moves(board)
    move = None
    while move not in legal:
        move = ask_number("Jaki będzie Twój ruch? (0 - 8):", 0, NUM_SQUARES,1)
        if move not in legal:
            print("\nTo pole jest już zajęte, niemądry Człowieku.  Wybierz inne.\n")
    print("Znakomicie...")
    return move


def computer_move(board, computer, human):
    """Spowoduj wykonanie ruchu przez komputer."""
    # utwórz kopię roboczą, ponieważ funkcja będzie zmieniać listę
    board = board[:]
    # najlepsze pozycje do zajęcia według kolejności
    BEST_MOVES = (4, 0, 2, 6, 8, 1, 3, 5, 7)

    print("Wybieram pole numer", end=" ")
    
    # jeśli komputer może wygrać, wykonaj ten ruch
    for move in legal_moves(board):
        board[move] = computer
        if winner(board) == computer:
            print(move)
            return move
        # ten ruch został sprawdzony, wycofaj go
        board[move] = EMPTY
    
    # jeśli człowiek może wygrać, zablokuj ten ruch
    for move in legal_moves(board):
        board[move] = human
        if winner(board) == human:
            print(move)
            return move
        # ten ruch został sprawdzony, wycofaj go
        board[move] = EMPTY

    # ponieważ nikt nie może wygrać w następnym ruchu, wybierz najlepsze wolne pole
    for move in BEST_MOVES:
        if move in legal_moves(board):
            print(move)
            return move


def next_turn(turn):
    """Zmień wykonawcę ruchu."""
    if turn == X:
        return O
    else:
        return X

    
def congrat_winner(the_winner, computer, human):
    """Pogratuluj zwycięzcy."""
    if the_winner != TIE:
        print(the_winner, "jest zwycięzcą!\n")
    else:
        print("Remis!\n")

    if the_winner == computer:
        print("Jak przewidywałem, Człowieku, jeszcze raz zostałem triumfatorem.  \n" \
              "Dowód na to, że komputery przewyższają ludzi pod każdym względem.")

    elif the_winner == human:
        print("No nie!  To niemożliwe!  Jakoś udało Ci się mnie zwieść, Człowieku. \n" \
              "Ale to się nigdy nie powtórzy!  Ja, komputer, przyrzekam Ci to!")

    elif the_winner == TIE:
        print("Miałeś mnóstwo szczęścia, Człowieku, i jakoś udało Ci się ze mną " \
              "zremisować. \nŚwiętuj ten dzień... bo to najlepszy wynik, jaki możesz " \
              "kiedykolwiek osiągnąć.")


def main():
    display_instruct()
    computer, human = pieces()
    turn = X
    board = new_board()
    display_board(board)

    while not winner(board):
        if turn == human:
            move = human_move(board, human)
            board[move] = human
        else:
            move = computer_move(board, computer, human)
            board[move] = computer
        display_board(board)
        turn = next_turn(turn)

    the_winner = winner(board)
    congrat_winner(the_winner, computer, human)


# rozpocznij program
main()
input("\n\nAby zakończyć grę, naciśnij klawisz Enter.")

Natomiast tutaj wklejam moje "rozwiązanie", które wyciąłem z powyższego kodu. Program działa, ale niestety nie wiem czy dobrze, bo rozwiązanie zadania poprzez "przypisanie" kroku do funkcji ask_number wydaje mi się banalnie proste. Nie znalazłem żadnej różnicy w działaniu programu stąd też nie mam bladego pojęcia po co akurat w miejscu, gdzie użytkownik ma wskazać numer, autor prosi o krok...

Definicja funkcji:

def ask_number(question, low, high, step):
    """Poproś o podanie liczby z odpowiedniego zakresu."""
    response = None
    while response not in range(low, high, step):
        response = int(input(question))
    return response

Wykorzystanie funkcji w definicji innej:

def human_move(board, human):
    """Odczytaj ruch człowieka."""  
    legal = legal_moves(board)
    move = None
    while move not in legal:
        move = ask_number("Jaki będzie Twój ruch? (0 - 8):", 0, NUM_SQUARES,1)
        if move not in legal:
            print("\nTo pole jest już zajęte, niemądry Człowieku.  Wybierz inne.\n")
    print("Znakomicie...")
    return move
0

Panowie i Panie pomocy :)

Rozdział 6, zadanie nr 2
Zmodyfikuj projekt Jaka to liczba? z rozdziału 3. przez użycie w nim funkcji ask_number().

# Jaka to liczba?
#
# Komputer wybiera losowo liczbę z zakresu od 1 do 100.
# Gracz próbuje ją odgadnąć, a komputer go informuje,
# czy podana przez niego liczba jest: za duża, za mała,
# prawidłowa.

import random  

print("\tWitaj w grze 'Jaka to liczba'!")
print("\nMam na myśli pewną liczbę z zakresu od 1 do 100.")
print("Spróbuj ją odgadnąć w jak najmniejszej liczbie prób.\n")

the_number = random.randint(1, 100)


# definicja funkcji
def ask_the_number(guess):
    while guess != the_number:
        if guess > the_number:
            print("Za duża...")
        else:
            print("Za mała...")
        tries += 1
        guess = int(input("Wprowadź liczbę: "))
        
# kod główny
tries = 1
ask_the_number(int(input("Wprowadź liczbę: ")))
print("Odgadłeś! Ta liczba to", the_number)
print("Do osiągnięcia sukcesu potrzebowałeś tylko", tries, "prób!\n")
  
input("\n\nAby zakończyć program, naciśnij klawisz Enter.")

Po odgadnięciu poprawnej liczby wyskakuje mi błąd:
Traceback (most recent call last):
File "E:\Praca\IT Analityk biznesowy\Python - język programowania\kody\r03\jaka_to_liczba.py", line 29, in <module>
ask_the_number(int(input("Wprowadź liczbę: ")))
File "E:\Praca\IT Analityk biznesowy\Python - język programowania\kody\r03\jaka_to_liczba.py", line 24, in ask_the_number
tries += 1
UnboundLocalError: local variable 'tries' referenced before assignment

0

Jeśli chcesz modyfikować zmienne spoza scope'u funkcji, musisz dodać global <var> gdzieś w ciele funkcji zanim jej użyjesz. Można, ale to jest zła praktyka - lepiej będzie zadeklarować tries wewnątrz funkcji, a potem je zwrócić.

0

W jaki sposób mogę to zrobić? Chodzi mi o zwrócenie zmienniej z wnętrza funkcji. Ten sposób poniżej powoduje problem w przypadku poprawnej odp - nie zadeklarowano zmiennej "tries"

# definicja zmiennej
def ask_the_number(guess, tries):
    while guess != the_number:
        if guess > the_number:
            print("Za duża...")
        else:
            print("Za mała...")
        tries += 1
        guess = int(input("Wprowadź liczbę: "))

# kod główny
ask_the_number(int(input("Wprowadź liczbę: ")), 1)

print("Odgadłeś! Ta liczba to", the_number)
print("Do osiągnięcia sukcesu potrzebowałeś tylko", tries, "prób!\n")
  
input("\n\nAby zakończyć program, naciśnij klawisz Enter.")
0

Nie przekazuj zmiennej tries jako parametr, tylko zdefiniuj ją w ciele funkcji, a pod koniec zwróć. Wynik ten funkcji przypisz do zmiennej, której potem użyjesz do wypisania ile prób użytkownik potrzebował do odgadnięcia liczby.

0

Chyba teraz wszystko gra. Dzięki za pomoc.

# Jaka to liczba?
#
# Komputer wybiera losowo liczbę z zakresu od 1 do 100.
# Gracz próbuje ją odgadnąć, a komputer go informuje,
# czy podana przez niego liczba jest: za duża, za mała,
# prawidłowa.

import random  

print("\tWitaj w grze 'Jaka to liczba'!")
print("\nMam na myśli pewną liczbę z zakresu od 1 do 100.")
print("Spróbuj ją odgadnąć w jak najmniejszej liczbie prób.\n")

the_number = random.randint(1, 100)


# definicja zmiennej
def ask_the_number(guess):
    tries = 1
    while guess != the_number:
        if guess > the_number:
            print("Za duża...")
        else:
            print("Za mała...")
        tries += 1
        guess = int(input("Wprowadź liczbę: "))
    return tries

# kod główny
tries = ask_the_number(int(input("Wprowadź liczbę: ")))

print("Odgadłeś! Ta liczba to", the_number)
print("Do osiągnięcia sukcesu potrzebowałeś tylko", tries, "prób!\n")
  
input("\n\nAby zakończyć program, naciśnij klawisz Enter.")
0
Krispekowy napisał(a):

Chyba teraz wszystko gra. Dzięki za pomoc.

# Jaka to liczba?
#
# Komputer wybiera losowo liczbę z zakresu od 1 do 100.
# Gracz próbuje ją odgadnąć, a komputer go informuje,
# czy podana przez niego liczba jest: za duża, za mała,
# prawidłowa.

import random  

print("\tWitaj w grze 'Jaka to liczba'!")
print("\nMam na myśli pewną liczbę z zakresu od 1 do 100.")
print("Spróbuj ją odgadnąć w jak najmniejszej liczbie prób.\n")

the_number = random.randint(1, 100)


# definicja zmiennej
def ask_the_number(guess):
    tries = 1
    while guess != the_number:
        if guess > the_number:
            print("Za duża...")
        else:
            print("Za mała...")
        tries += 1
        guess = int(input("Wprowadź liczbę: "))
    return tries

# kod główny
tries = ask_the_number(int(input("Wprowadź liczbę: ")))

print("Odgadłeś! Ta liczba to", the_number)
print("Do osiągnięcia sukcesu potrzebowałeś tylko", tries, "prób!\n")
  
input("\n\nAby zakończyć program, naciśnij klawisz Enter.")

Dlaczego guess jest parametrem funkcji?

0
enedil napisał(a):
Krispekowy napisał(a):

Chyba teraz wszystko gra. Dzięki za pomoc.

# Jaka to liczba?
#
# Komputer wybiera losowo liczbę z zakresu od 1 do 100.
# Gracz próbuje ją odgadnąć, a komputer go informuje,
# czy podana przez niego liczba jest: za duża, za mała,
# prawidłowa.

import random  

print("\tWitaj w grze 'Jaka to liczba'!")
print("\nMam na myśli pewną liczbę z zakresu od 1 do 100.")
print("Spróbuj ją odgadnąć w jak najmniejszej liczbie prób.\n")

the_number = random.randint(1, 100)


# definicja zmiennej
def ask_the_number(guess):
    tries = 1
    while guess != the_number:
        if guess > the_number:
            print("Za duża...")
        else:
            print("Za mała...")
        tries += 1
        guess = int(input("Wprowadź liczbę: "))
    return tries

# kod główny
tries = ask_the_number(int(input("Wprowadź liczbę: ")))

print("Odgadłeś! Ta liczba to", the_number)
print("Do osiągnięcia sukcesu potrzebowałeś tylko", tries, "prób!\n")
  
input("\n\nAby zakończyć program, naciśnij klawisz Enter.")

Dlaczego guess jest parametrem funkcji?

Nie rozumiem? Po prostu taką nazwę przypisałem.

0

Chodzi o to, że w takim wypadku parametr nie powinien być w ogóle przesyłany, a pierwszy input powinien znaleźć się już w funkcji.

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