Vi bygger ett matematikspel: Skillnad mellan sidversioner

Från Wikiskola
Hoppa till navigering Hoppa till sök
(Skapade sidan med 'Kategori:Python {{malruta| '''Kom igång med programmering i matematiken.''' Målet är att du ska köra ditt första program för att utföra matematiska beräkningar....')
 
 
(16 mellanliggande sidversioner av 2 användare visas inte)
Rad 1: Rad 1:
[[Kategori:Python]]  
[[Kategori:Python]] [[Kategori:Ma1c]] [[Kategori:Ma2c]] [[Kategori:Aritmetik]]  [[Kategori:Årskurs 7-9]]
{{python|[[Python|Python-hjälp]] - [https://wikiskola.se/index.php?title{{=}}Kategori:Python Fler exempel]}}
{{malruta| '''Kom igång med programmering i matematiken.'''
{{malruta| '''Kom igång med programmering i matematiken.'''


Målet är att du ska köra ditt första program för att utföra matematiska beräkningar.  
Målet är att du ska köra ett enkelt program för att utföra matematiska beräkningar.  
Du bör testa att modifiera algoritmen så att dina beräkningar blir mer effektiva.
Du bör testa att modifiera algoritmen så att dina beräkningar blir mer effektiva.


Rad 8: Rad 9:
}}
}}


== Ett eneklt spel där du ska summera två tal ==
Det här kodexemplet passar till avsnittet om tal på Ma1c.
=== Koden ===
<pre>
import random
print("Välkommen till detta finfina räknespel! \n")
print("Du kommer att få öva huvudräkning i addition.")
print("Du komemr att få en poäng per rätt svar. Spelet är slut")
print("när du kommer upp i fem poäng. \n")
print("Tryck på Enter-knappen när du vill börja.")
poäng = 0
antalFrågor = 0
fel = 0
while poäng < 5:
  tal1 = random.randint(12,250)
  tal2 = random.randint(12,250)
  summa = tal1 + tal2
  antalFrågor += 1
  print("Vad blir", tal1, " + ", tal2, " ?")
  användarSvar = int(input("Svar: "))
  if användarSvar == summa:
    print("Rätt")
    poäng += 1
  else:
    print("Fel")
    fel +=1
   
if fel <=1:
  print("Grattis")
  print("Antal frågor: " + str(antalFrågor))
  print("Antal poäng: " + str(poäng))
  print("Antal fel: " + str(fel))
elif fel >= 4:
  print("Klantigt")
  print("Antal frågor: " + str(antalFrågor))
  print("Antal poäng: " + str(poäng))
  print("Antal fel: " + str(fel))
else:
  print("OK")
  print("Antal frågor: " + str(antalFrågor))
  print("Antal poäng: " + str(poäng))
  print("Antal fel: " + str(fel))
</pre>
=== Credit ===
Årstaskolan har en kurs: [https://kurser.arstaskolan.se/alla-kurser/pyt1-python-grundkurs-vi-bygger-ett-matematikspel/ Python Grundkurs - Vi bygger ett matematikspel] varifrån jag har plockat följande övning:
Årstaskolan har en kurs: [https://kurser.arstaskolan.se/alla-kurser/pyt1-python-grundkurs-vi-bygger-ett-matematikspel/ Python Grundkurs - Vi bygger ett matematikspel] varifrån jag har plockat följande övning:


Det är Micke Kring som gjort kursen med stöd av IIS och |är publicerad under Creative Commons
=== Uppgift ===
{{uppgruta| '''Gör om spelet'''
Ändra i koden så att du använder andra räknesätt, andra talintervall eller till exempel rationella tal.
}}
== Fler matte spel ==
=== Ett enkelt spel där du ska summera två tal (Utvecklat) ===
==== Kod ====
<pre>
from random import randint
def get_valid_number(message, min_value = None, max_value = None):
    x = None
   
    while True:
        try:
            x = int(input(message))
           
            if (min_value is None or x >= min_value) and (max_value is None or x <= max_value):
                break
        except:
            print("Invalid numeric value")
           
            message = ""
           
            continue
       
        message = ""
       
        print(("Number must be greater than " + str(min_value - 1) if min_value is not None else "") + (" and less than " + str(max_value + 1) if max_value is not None else ""))
           
    return x
     
count = get_valid_number("How many questions do you wish to have?\n", 1)
range_min = get_valid_number("What is the smallest number you want?\n")
range_max = get_valid_number("What is the largest number you want?\n", range_min)
answers = []
for i in range(0, count):
    x = randint(range_min, range_max)
    y = randint(range_min, range_max)
   
    print(str(i + 1) + ". " + str(x) + " + " + str(y) + " = ?")
   
    user_input = get_valid_number("Answer: ")
   
    answer = {};
    answer["input"] = user_input
    answer["x"] = x
    answer["y"] = y
   
    answers.append(answer)
correct_answers = [answer for answer in answers if answer["input"] == answer["x"] + answer["y"]]
print("You got " + str(len(correct_answers)) + " out of " + str(len(answers)))
user_input = get_valid_number("What do you want to do next?\n1. Print all the answers\n2. Too be implemented\n", 1, 2)


Det är Micke Kring som gjort kursen med stöd av IIS och den är publicerad under Creative Commons
if user_input == 1:
    for i in range(0, len(answers)):
        answer = answers[i]
       
        message = ""
        message += str(i + 1) + ". " + str(answer["x"]) + " + " + str(answer["y"]) + " = " + str(answer["x"] + answer["y"])
        message += ", you answered " + str(answer["input"]) + " (" + ("Correct" if answer in correct_answers else "Incorrect") + ")"
       
        print(message)
elif user_input == 2:
    print("To be implemented")
</pre>
==== Credit ====
Joakim Rosell 17D

Nuvarande version från 31 maj 2018 kl. 19.11

Programmeringsuppgift

Python-hjälp - Fler exempel

Mål för undervisningen Kom igång med programmering i matematiken.

Målet är att du ska köra ett enkelt program för att utföra matematiska beräkningar. Du bör testa att modifiera algoritmen så att dina beräkningar blir mer effektiva.

Målet är inte att du ska lära dig programmering på matematiklektionen men det är oundvikligt att du ändå lär dig lite Python-kod.


Ett eneklt spel där du ska summera två tal

Det här kodexemplet passar till avsnittet om tal på Ma1c.

Koden

import random 

print("Välkommen till detta finfina räknespel! \n")
print("Du kommer att få öva huvudräkning i addition.")
print("Du komemr att få en poäng per rätt svar. Spelet är slut")
print("när du kommer upp i fem poäng. \n")
print("Tryck på Enter-knappen när du vill börja.")

poäng = 0
antalFrågor = 0
fel = 0

while poäng < 5:
  tal1 = random.randint(12,250)
  tal2 = random.randint(12,250)
  summa = tal1 + tal2
  antalFrågor += 1
  print("Vad blir", tal1, " + ", tal2, " ?")
  användarSvar = int(input("Svar: "))
  if användarSvar == summa:
    print("Rätt")
    poäng += 1
  else:
    print("Fel")
    fel +=1
    
if fel <=1:
  print("Grattis")
  print("Antal frågor: " + str(antalFrågor))
  print("Antal poäng: " + str(poäng))
  print("Antal fel: " + str(fel))
elif fel >= 4:
  print("Klantigt")
  print("Antal frågor: " + str(antalFrågor))
  print("Antal poäng: " + str(poäng))
  print("Antal fel: " + str(fel))
else:
  print("OK")
  print("Antal frågor: " + str(antalFrågor))
  print("Antal poäng: " + str(poäng))
  print("Antal fel: " + str(fel))

Credit

Årstaskolan har en kurs: Python Grundkurs - Vi bygger ett matematikspel varifrån jag har plockat följande övning:

Det är Micke Kring som gjort kursen med stöd av IIS och |är publicerad under Creative Commons

Uppgift

Uppgift
Gör om spelet

Ändra i koden så att du använder andra räknesätt, andra talintervall eller till exempel rationella tal.


Fler matte spel

Ett enkelt spel där du ska summera två tal (Utvecklat)

Kod

from random import randint

def get_valid_number(message, min_value = None, max_value = None):
    x = None
    
    while True:
        try:
            x = int(input(message))
            
            if (min_value is None or x >= min_value) and (max_value is None or x <= max_value):
                break
        except:
            print("Invalid numeric value")
            
            message = ""
            
            continue
        
        message = ""
        
        print(("Number must be greater than " + str(min_value - 1) if min_value is not None else "") + (" and less than " + str(max_value + 1) if max_value is not None else ""))
            
    return x
      
count = get_valid_number("How many questions do you wish to have?\n", 1)
range_min = get_valid_number("What is the smallest number you want?\n")
range_max = get_valid_number("What is the largest number you want?\n", range_min)

answers = []

for i in range(0, count):
    x = randint(range_min, range_max)
    y = randint(range_min, range_max)
    
    print(str(i + 1) + ". " + str(x) + " + " + str(y) + " = ?")
    
    user_input = get_valid_number("Answer: ")
    
    answer = {};
    answer["input"] = user_input
    answer["x"] = x
    answer["y"] = y
    
    answers.append(answer)

correct_answers = [answer for answer in answers if answer["input"] == answer["x"] + answer["y"]]

print("You got " + str(len(correct_answers)) + " out of " + str(len(answers)))

user_input = get_valid_number("What do you want to do next?\n1. Print all the answers\n2. Too be implemented\n", 1, 2)

if user_input == 1:
    for i in range(0, len(answers)):
        answer = answers[i]
        
        message = ""
        message += str(i + 1) + ". " + str(answer["x"]) + " + " + str(answer["y"]) + " = " + str(answer["x"] + answer["y"])
        message += ", you answered " + str(answer["input"]) + " (" + ("Correct" if answer in correct_answers else "Incorrect") + ")"
        
        print(message)
elif user_input == 2:
    print("To be implemented")

Credit

Joakim Rosell 17D