Skip to content

kmom04

Detta seminarium tar upp följande områden: loopar och problemlösning.

  1. Vad returnerar funktionen len() när den används på listan i exemplet nedan? Och vad innehåller listan?

    throwing_events = ["hammer", "discus", "weight"]
    throwing_events.insert(1, "shotput")
    throwing_events.append("longjump")
    throwing_events.insert(3, "javelin")
    throwing_events.remove("longjump")
    print(len(throwing_events))
  2. Vad gör list slicing? Vad skrivs ut här?

    my_list = [ 1, "hej", "", "dig", 100]
    print(my_list[1:4])
    print(my_list[:-2])
  3. Vad skrivs ut med följande kod?

    def curve_grades(grades, bonus):
    for i in range(len(grades)):
    grades[i] = min(grades[i] + bonus, 100)
    grades = [72, 85, 90, 99]
    print("Before:", grades)
    curve_grades(grades, 5)
    print("After: ", grades)
  4. Om vi har följande kod, vad kommer att skrivas ut då och varför? Om du vill ha en lokal kopia i varje anrop, hur kan du göra det?

    def add_item(item, container=[]):
    container.append(item)
    return container
    print(add_item("apple"))
    print(add_item("banana"))
  5. Varför skriver följande kod ut [[1, 0, 0], [1, 0, 0], [1, 0, 0]]?

    matrix = [[0]*3] * 3
    matrix[0][0] = 1
    print(matrix)

Börja med att planera er lösning, vilken kod behövs och vilka datatyper er data kommer ha i de olika stegen. Efter ni har en plan, skriv koden. Skriv gärna pseudokod innan kodning. Vilka alternativa lösningar finns?

  1. Uppdatera klasslistan.

    • Anna, Bo, Carla, David och Sara går i klassen.
    • Lägg till de nya studenterna Alexander och Alve sist i klasslistan.
    • Lägg till den nye studenten Teo på plats 2 i listan.
    • Carla vill byta klass och slutar i klassen.
    • Den student som lades till sist i listan ångrar sig och slutar i klassen. Vilken metod använder du?
    • Hur många studenter är det i klassen nu?
    • Sortera listan i bokstavordning och skriv ut den.
  2. Skapa spelet tre i rad (tic-tac-toe). Nedanför finns kod för att hjälpa er komma igång. Fyll i de tre funktionerna print_board, check_winner och is_full med kod så att koden i tic-tac-toe() fungerar.

    # Tic-Tac-Toe game
    def create_board():
    """
    Create a 3x3 grid, representing a tic-tac-toe game, initialized with spaces
    Returns:
    list: Game board.
    """
    board = []
    i = 0
    while i < 3:
    row = []
    j = 0
    while j < 3:
    row.append(" ")
    j += 1
    board.append(row)
    i += 1
    return board
    def print_board(board):
    """
    Print current game board.
    Arguments:
    board (list): Game board.
    """
    def check_winner(board, player):
    """
    Check if a player has won.
    A player wins if their symbol has been placed three times in a row.
    A player can win horizontally, vertically and diagonally.
    Arguments:
    board (list): Game board.
    player (str): Player symbol.
    Returns:
    bool: If player has won.
    """
    def is_full(board):
    """
    Return True if the board is full. Otherwise False.
    Arguments:
    board (list): Game board.
    Returns:
    bool: If board is full.
    """
    def tic_tac_toe():
    board = create_board()
    current_player = "X"
    while True:
    print_board(board)
    try:
    row = int(input(f"Player {current_player}, enter row (0-2): "))
    col = int(input(f"Player {current_player}, enter col (0-2): "))
    except ValueError:
    print("Invalid input. Enter numbers 0-2.")
    continue
    if not (0 <= row <= 2 and 0 <= col <= 2):
    print("Coordinates out of range.")
    continue
    if board[row][col] != " ":
    print("Cell already taken. Choose another.")
    continue
    board[row][col] = current_player
    if check_winner(board, current_player):
    print_board(board)
    print(f"Player {current_player} wins!")
    break
    if is_full(board):
    print_board(board)
    print("It's a tie!")
    break
    # Switch player
    current_player = "O" if current_player == "X" else "X"
    if __name__ == "__main__":
    tic_tac_toe()