Dzielenie pisemne
WPROWADZENIE
Program generuje 10 działań dzielenia wraz z odpowiedziami:
dzielna : dzielnik = iloraz
- Zadeklaruj minimalną i maksymalną wartość dzielnej
- Zadeklaruj minimalną i maksymalną wartość dzielnika
PRZYKŁAD
Minimalna wartość dzielnej: 3000
Maksymalna wartość dzielnej: 4000
Wylosowane zostanie 10 liczb z przedziału od 3000 do 4000
Minimalna wartość dzielnika: 90
Maksymalna wartość dzielnika: 200
Wylosowane zostanie 10 liczb z przedziału od 90 do 200
Przykładowy wynik:
Tu ma być grafika: https://mat.przemek.edu.pl/wp-content/uploads/2024/08/image-2-1024x794.png
Na dole każdej strony można dodać własny podpis.
KOD W JĘZYKU PYTHON
pip install reportlab
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
from reportlab.lib.units import inch
from random import randrange
import string
while True:
try:
min_dividend = int(input("Podaj minimalną wartość dla dzielnej (liczba całkowita): "))
max_dividend = int(input("Podaj maksymalną wartość dla dzielnej (liczba całkowita większa lub równa poprzedniej): "))
min_divisor = int(input("Podaj minimalną wartość dla dzielnika (liczba całkowita większa od 1): "))
max_divisor = int(input("Podaj maksymalną wartość dla dzielnika (liczba całkowita większa lub równa poprzedniej): "))
if min_dividend >= max_dividend or min_divisor >= max_divisor or min_divisor < 2:
print("Wprowadzone wartości są nieprawidłowe. WPROWADŹ JESZCZE RAZ WSZYSTKIE PONOWNIE:\n")
continue
break
except ValueError:
print("Wprowadzono nieprawidłowe dane. Spróbuj ponownie.")
examples = []
for i in range(10):
dividend = randrange(min_dividend, max_dividend + 1)
divisor = randrange(min_divisor, max_divisor + 1)
quotient = dividend // divisor
remainder = dividend % divisor
example = f"{string.ascii_uppercase[i]}) {dividend} ÷ {divisor} ="
if remainder == 0:
examples.append((example, str(quotient)))
else:
examples.append((example, f"{quotient} r {remainder}"))
napis = str(input('Wpisz tekst, który zostanie dodany na dole każdej strony w pliku PDF '))
c = canvas.Canvas("cwiczenia.pdf", pagesize=letter)
# pierwsza strona PDF
c.setFont("Helvetica", 14)
c.drawString(inch, 10 * inch, "Wykonaj obliczenia:")
x = 1.5 * inch
y = 9.5 * inch
for i, (example, _) in enumerate(examples):
if i % 1 == 0 and i != 0:
x = 1.5 * inch
y -= 0.8 * inch
c.drawString(x, y, example)
x += 1.5 * inch
c.drawCentredString(letter[0] / 2, 0.5 * inch, napis)
# druga strona
c.showPage()
c.setFont("Helvetica", 14)
c.drawString(inch, 10 * inch, "Odpowiedzi:")
x = 1.5 * inch
y = 9.5 * inch
for i, (_, answer) in enumerate(examples):
if i % 1 == 0 and i != 0:
x = 1.5 * inch
y -= 0.8 * inch
c.drawString(x, y, f"{string.ascii_uppercase[i]}) {answer}")
x += 1.5 * inch
c.drawCentredString(letter[0] / 2, 0.5 * inch, napis)
c.save()
print('\n\n PLIK O NAZWIE cwiczenia.pdf ZOSTAŁ WYGENEROWANY')⬆️⬆️⬆️ Zobacz w Google Colaboratory
JAK DZIAŁA PROGRAM?
- instalacja biblioteki do eksportu PDF
- Importowanie modułów
- Utworzenie pętli, która pobiera minimalną i maksymalną wartość dla dzielnej i dzielnika od użytkownika.
- Upewnienie się, że minimalna wartość dzielnej jest mniejsza niż maksymalna wartość dzielnej, minimalna wartość dzielnika jest większa niż 1, a minimalna wartość dzielnika jest mniejsza niż maksymalna wartość dzielnika.
- Jeśli którykolwiek z tych warunków nie jest spełniony, użytkownik jest proszony o ponowne wprowadzenie danych.
- Wygenerowanie 10 przykładów dzielenia całkowitego z wykorzystaniem funkcji randrange z przedziałów minimalnych i maksymalnych wartości dzielnej i dzielnika, a następnie przypisanie wyników do zmiennej examples jako listy krotek zawierających przykład i odpowiedź.
- Zapytanie użytkownika o tekst, który ma zostać dodany na dole każdej strony pliku PDF.
- Utworzenie obiektu canvas i wybranie rozmiaru strony jako letter.
- Na pierwszej stronie PDF:
- ustawienie czcionki Helvetica o rozmiarze 14 i wyświetlenie tekstu „Wykonaj obliczenia:”.
- Następnie, dla każdego przykładu, wyświetlenie numeru przykładu, dzielnej, dzielnika i znaku równości.
- Przykłady są wyświetlane w dwóch kolumnach, zaczynając od lewej strony, a następnie przesuwając w dół do kolejnego wiersza, gdy pierwszy wiersz zostanie wypełniony.
- Na końcu strony dodawany jest tekst wprowadzony przez użytkownika.
- Druga strona jest wypełniona odpowiedziami dla każdego przykładu, numerem przykładu i odpowiedzią.
- Wyświetlanie odbywa się w ten sam sposób, co na pierwszej stronie.
- Na końcu strony dodawany jest tekst wprowadzony przez użytkownika.
- Zapisanie pliku pdf o nazwie cwiczenia.pdf.
- Wyświetlenie komunikatu informującego, że plik został wygenerowany.