Vi bygger ett matematikspel: Skillnad mellan sidversioner
Hoppa till navigering
Hoppa till sök
Hakan (diskussion | bidrag) Ingen redigeringssammanfattning |
Hakan (diskussion | bidrag) |
||
(6 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]}} | {{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.''' | ||
Rad 70: | Rad 70: | ||
Ändra i koden så att du använder andra räknesätt, andra talintervall eller till exempel rationella tal. | Ä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) | |||
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
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