Permalänk

Programmering 1 Bingo

Hej,

Har nyss börjat med programmering och ville bara höra om någon kunde ge input på min kod.
Försöker få ett A i denna kurs så tar all input jag kan få för att bli bättre!

ursäktar att den inte blir strukturerad korrekt mitt första upplägg ^^'

import random red_color_code = '\033[91m' reset_color_code = '\033[0m' #checks for Bingo on player card def check_bingo(card): for row in card: if all(number != 0 for number in row): return True for column in range(5): if all(row[column] != 0 for row in card): return True if all(card[i][i] != 0 for i in range(5)): return True if all(card[i][4-i] != 0 for i in range(5)): return True return False def bingo_game(): Pulled = [] bingo_card = [[0 for _ in range(5)] for _ in range(5)] bingo_card2 = [[0 for _ in range(5)] for _ in range(5)] numbers = list(range(1, 26)) random.shuffle(numbers) #Setting up cordinates for row_index in range(5): for col_index in range(5): bingo_card[row_index][col_index] = numbers[row_index*5 + col_index] #Game loop while len(numbers) > 0: random.shuffle(numbers) random_number = numbers[0] Pulled.append(random_number) numbers.remove(random_number) print (Pulled) print("Your Bingo card") for row in bingo_card: for number in row: if number in Pulled: print(f"{red_color_code}{number}{reset_color_code}", end='\t') #Makes the number red for the player to easly distinguish what number has shown. bingo_card2[bingo_card.index(row)][row.index(number)] = number else: print(number, end='\t') print() if check_bingo(bingo_card2): #Break when game checks that player has a bingo. print("Bingo!") break (input("press Enter to continue")) #To make the game play in the pace of the player, Did also consider making it timebased but figured it would feel better as a player this way play_again = "yes" while play_again.lower() == "yes": bingo_game() play_again = input('If you wish to play again type "yes" and if you are done playing then just press enter: ') print ("Thank you for playing!")

Kod-taggar. // MOD
Permalänk
Medlem
Skrivet av LittleFancyPants:

Hej,

Har nyss börjat med programmering och ville bara höra om någon kunde ge input på min kod.
Försöker få ett A i denna kurs så tar all input jag kan få för att bli bättre!

ursäktar att den inte blir strukturerad korrekt mitt första upplägg ^^'

import random

red_color_code = '\033[91m'
reset_color_code = '\033[0m'
#checks for Bingo on player card
def check_bingo(card):
for row in card:
if all(number != 0 for number in row):
return True

for column in range(5):
if all(row[column] != 0 for row in card):
return True

if all(card[i][i] != 0 for i in range(5)):
return True

if all(card[i][4-i] != 0 for i in range(5)):
return True
return False
def bingo_game():
Pulled = []
bingo_card = [[0 for _ in range(5)] for _ in range(5)]
bingo_card2 = [[0 for _ in range(5)] for _ in range(5)]
numbers = list(range(1, 26))
random.shuffle(numbers)

#Setting up cordinates
for row_index in range(5):
for col_index in range(5):
bingo_card[row_index][col_index] = numbers[row_index*5 + col_index]
#Game loop
while len(numbers) > 0:
random.shuffle(numbers)
random_number = numbers[0]
Pulled.append(random_number)
numbers.remove(random_number)
print (Pulled)
print("Your Bingo card")
for row in bingo_card:
for number in row:
if number in Pulled:
print(f"{red_color_code}{number}{reset_color_code}", end='\t') #Makes the number red for the player to easly distinguish what number has shown.
bingo_card2[bingo_card.index(row)][row.index(number)] = number
else:
print(number, end='\t')
print()
if check_bingo(bingo_card2): #Break when game checks that player has a bingo.
print("Bingo!")
break
(input("press Enter to continue")) #To make the game play in the pace of the player, Did also consider making it timebased but figured it would feel better as a player this way

play_again = "yes"

while play_again.lower() == "yes":
bingo_game()
play_again = input('If you wish to play again type "yes" and if you are done playing then just press enter: ')

print ("Thank you for playing!")

Lägg koden i [code]<din kod här>[/code]-taggar, så blir det lättare att läsa

Visa signatur

:(){ :|:& };:

🏊🏻‍♂️   🚴🏻‍♂️   🏃🏻‍♂️   ☕

Permalänk
Hedersmedlem

Hej!

För det första, särskilt när du ska klistra in Python-kod, inneslut din kod här på forumet mellan [code] och [/code]. Annars kommer koden vara svårläst, särskilt för Python där indenteringen är en nödvändig del av koden.

Permalänk
Skrivet av LittleFancyPants:

Hej,

Har nyss börjat med programmering och ville bara höra om någon kunde ge input på min kod.
Försöker få ett A i denna kurs så tar all input jag kan få för att bli bättre!

ursäktar att den inte blir strukturerad korrekt mitt första upplägg ^^'

import random

red_color_code = '\033[91m'
reset_color_code = '\033[0m'
#checks for Bingo on player card
def check_bingo(card):
for row in card:
if all(number != 0 for number in row):
return True

for column in range(5):
if all(row[column] != 0 for row in card):
return True

if all(card[i][i] != 0 for i in range(5)):
return True

if all(card[i][4-i] != 0 for i in range(5)):
return True
return False
def bingo_game():
Pulled = []
bingo_card = [[0 for _ in range(5)] for _ in range(5)]
bingo_card2 = [[0 for _ in range(5)] for _ in range(5)]
numbers = list(range(1, 26))
random.shuffle(numbers)

#Setting up cordinates
for row_index in range(5):
for col_index in range(5):
bingo_card[row_index][col_index] = numbers[row_index*5 + col_index]
#Game loop
while len(numbers) > 0:
random.shuffle(numbers)
random_number = numbers[0]
Pulled.append(random_number)
numbers.remove(random_number)
print (Pulled)
print("Your Bingo card")
for row in bingo_card:
for number in row:
if number in Pulled:
print(f"{red_color_code}{number}{reset_color_code}", end='\t') #Makes the number red for the player to easly distinguish what number has shown.
bingo_card2[bingo_card.index(row)][row.index(number)] = number
else:
print(number, end='\t')
print()
if check_bingo(bingo_card2): #Break when game checks that player has a bingo.
print("Bingo!")
break
(input("press Enter to continue")) #To make the game play in the pace of the player, Did also consider making it timebased but figured it would feel better as a player this way

play_again = "yes"

while play_again.lower() == "yes":
bingo_game()
play_again = input('If you wish to play again type "yes" and if you are done playing then just press enter: ')

print ("Thank you for playing!")

Tjo! Om Du siktar på toppbetyg så tycker jag att du åtminstone ska förstå varenda kodrad du använder dig av, oavsett hur du har fått tag på den (nätforum, bloggar, StackOverflow-sidor, LLM:er, osv), kombinerat med en allmänt bra struktur på din(a) lösning(ar).

Här nedanför har du ett förslag från Gemini-gratisversionen där den refaktoriserat om din kod (VIKTIGT: den är ej testkörd):

import random def check_bingo(card): """Checks for bingo on a 5x5 card.""" # Consider using a more efficient data structure or algorithm here for row in card: if all(number for number in row): return True for col in range(5): if all(card[row][col] for row in range(5)): return True if all(card[i][i] for i in range(5)): return True if all(card[i][4 - i] for i in range(5)): return True return False def create_bingo_card(): """Creates a 5x5 bingo card.""" numbers = list(range(1, 26)) random.shuffle(numbers) return [[numbers[i * 5 + j] for j in range(5)] for i in range(5)] def draw_numbers(numbers): """Draws numbers from the given list.""" while numbers: drawn_number = random.choice(numbers) numbers.remove(drawn_number) yield drawn_number def print_bingo_card(card, drawn_numbers): """Prints the bingo card with drawn numbers highlighted.""" for row in card: for number in row: if number in drawn_numbers: print(f"\033[91m{number}\033[0m", end="\t") else: print(number, end="\t") print() def bingo_game(): """Plays a Bingo game.""" drawn_numbers = [] bingo_card = create_bingo_card() bingo_card_check = [[False for _ in range(5)] for _ in range(5)] numbers = list(range(1, 26)) for number in draw_numbers(numbers): drawn_numbers.append(number) print(f"Drawn number: {number}") print_bingo_card(bingo_card, drawn_numbers) for i in range(5): for j in range(5): if bingo_card[i][j] == number: bingo_card_check[i][j] = True break if check_bingo(bingo_card_check): print("Bingo!") break input("Press Enter to continue") while True: bingo_game() if input("Play again? (yes/no): ").lower() != "yes": break print("Thank you for playing!")

Du kan använda inspiration och - på helt egen risk - kopiera diverse delar från den. Om du väljer att kopiera något så tycker jag att du ska kommentera varenda kodrad och ha kortare kommentarsbeskrivningar ovanför varje funktion (def): varför den finns och dess samspel med de andra funktionerna i din helhetslösning. Notera hur Gemini-svaret har delat in flera olika saker som behövs för ditt bingospel: starta spelet, skapa kort, skriva ut kort, kontrollera kort, och dra nummer med hjälp av olika funktioner (def).

Som sagt så har jag ej testkört den så den kan eventuellt innehålla logiska fel eller faktiska buggar eller kraschande kodrader. Dessa bitar är upp till dig att försäkra dig om (genom att förstå varenda kodrad och kommentera din förståelse i utbildningssammanhanget) såväl som att hantera eventuella edge-cases innan slutgiltig inlämning om du nu siktar på toppbetyg! 🫡

Mvh,
WKF.

Visa signatur

(V)ulnerabilities
(I)n
(B)asically
(E)verything
Programming

Permalänk

Jag vet inte vad ni har gått igenom på kursen, men jag får inte direkt intrycket att koden är skriven av någon som "nyss har börjat med programmering". Om ni inte har lärt er list comprehensions så är det nog läge att läsa på vad koden faktiskt gör innan du lämnar in. Och generatorer om du inspireras av koden @WebbkodsFrilansaren postade.

Behöver du slumpa om numbers varje varv i while-loopen?

Kika på list.pop() och se om du kan använda den någonstans.

Varför börjar Pulled stor bokstav när resten av variablerna börjar med små bokstäver?