[PYTHON] Erstellen Sie einen Berechnungsbohrdruck

Einführung

Ich habe ein Programm zur Erstellung von Berechnungsübungen erstellt, um Abzüge zum Selbststudium für die unteren Klassen der Grundschule zu erstellen. Erstellen Sie nach dem Zufallsprinzip eine Formel mit Python und konvertieren Sie sie in PDF im Format A4. Wenn Sie die erstellte Datei zu Hause oder in einem Supermarkt ausdrucken und Ihr Kind selbst lernt, wird der Zweck erreicht.

Umgebung

ReportLab-Installation

Verwenden Sie zum Drucken der generierten Formel ReportLab, eine Bibliothek für die PDF-Konvertierung.

$ sudo pip3 install ReportLab

Eine ausführliche Dokumentation zu ReportLab finden Sie unten. https://www.reportlab.com/docs/reportlab-userguide.pdf

Ausgabebild

Dieses Mal werden die zweistellige Addition, Subtraktion und Multiplikation auf dem Druck ausgegeben. image002.png

Verwendung der PDF-Ausgabefunktionen drawString und line

Diese Druckerstellung wird hauptsächlich mit zwei Funktionen realisiert: drawString () und line (). Bevor ich das Programm selbst betrete, werde ich nur die grundlegende Verwendung zusammenfassen.


from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.lib.pagesizes import A4

#Leinwand erstellen. Geben Sie den Dateinamen und die Größe an
c = canvas.Canvas("calc_train.pdf",pagesize=A4)
#Stellen Sie die Ausgabekoordinaten ein
x=0
y=0
# "hoge"Koordiniert die Zeichenkette(0,0)Exportieren nach
c.drawString(x,y,"hoge")
#Zeichnen Sie eine gerade Linie
c.line(x,y,x+10,y)
#PDF-Seite generieren
c.showPage()
#Datei speichern
c.save()

Der Ursprung der ReportLab-Koordinaten ist "unten links" auf der Seite.

Automatisches Generierungsprogramm für Berechnungsbohrer

Das folgende Programm zur automatischen Generierung von Berechnungsübungen mit ReportLab ist der Zweck dieser Zeit.

import os, sys
import random

from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.lib.pagesizes import A4

#Grundkoordinaten der 5x5 Formel
x_list = [20, 130,  240, 350, 460]
y_list = [730, 580, 430, 280, 130]
#Es ist auch möglich, die Schriftart anzugeben
fontname = "Helvetica"
#Um Japanisch auszugeben, stellen Sie Folgendes ein.
#Den Pfad entnehmen Sie bitte Ihrer Umgebung.
#pdfmetrics.registerFont(TTFont(fontname,"/mnt/c/Windows/Fonts/msgothic.ttc"))

#Eine Funktion, die eine Berechnungsformel an die angegebenen Koordinaten ausgibt
#Die erwartete Berechnung ist, dass jedes Element 2 Stellen oder weniger hat.
def Set_calc(c,x,y,ope,d1,d2):
    # c: canvas
    # x, y :Koordinate
    # ope :Zeichenfolge mathematischer Symbole
    offset = 30
    _d1 = str(d1)
    _d2 = str(d2)
    #Anpassen der Zeichenbreite
    if(d1<10):
        _d1 = " " + _d1
    if(d2<10):
        _d2 = " " + _d2        
    c.drawString(x+offset, y,        _d1)
    c.drawString(x,        y-offset, ope)
    c.drawString(x+offset, y-offset, _d2)
    c.line(x,y-offset-5,x+offset*2.5,y-offset-5)

#Eine Funktion, die eine Berechnungsformel für eine Seite generiert
def Make_page(c,ope,d1_max,d2_max):
    # c: canvas
    # ope :Zeichenfolge mathematischer Symbole
    # d1_max, d2_max :Maximalwerteinstellung für den zu berechnenden Wert
    c.setFont(fontname,20)
    #Zeichenkettenausgabe des Header-Teils
    c.drawString(5,800, " Name:  Day: /   ")
    c.setFont(fontname,30)

    # Set Value
    for row in y_list:
      for col in x_list:
        #Generieren Sie zufällig Elemente innerhalb des festgelegten Maximalwerts
        d1 = random.randint(1, d1_max)
        d2 = random.randint(1, d2_max)
        #Im Falle der Hinzufügung
        if(ope=="+"):
            Set_calc(c,col,row,"+ ",d1,d2)
        #Im Falle einer Subtraktion
        elif(ope=="-"):
            #Behandeln Sie keine negativen Werte
            if(d1<d2):
                tmp=d1
                d1=d2
                d2=tmp
            Set_calc(c,col,row,"- ",d1,d2)
        #Im Falle der Multiplikation
        elif(ope=="x"):
            Set_calc(c,col,row,"× ",d1,d2)
        else:
            print("[Error] Not support operation:",ope)
    c.showPage()

#Unten ist die Hauptfunktion
print(" >>> Start")
c = canvas.Canvas("calc_train.pdf",pagesize=A4)

#Addition (Maximalwert jedes Elements: 99)
Make_page(c,"+",99,99)
#Subtraktion (maximale Elementwerte: 99 und 9)
Make_page(c,"-",99,9)
#Subtraktion 2 (Maximalwert jedes Elements: 99)
Make_page(c,"-",99,99)
#Multiplikation (maximale Elementwerte: 99 und 9)
Make_page(c,"x",99,9)
c.save()

print(" >>> Finish")

Wenn das obige Beispiel ausgeführt wird, werden 5x5-Berechnungsformeln auf Papier im Format A4 ausgegeben. Bitte ändern Sie den Berechnungsbereich entsprechend der Note Ihres Kindes und passen Sie die Anzahl der Berechnungsformeln pro Blatt an.

image003.png

das ist alles. Danke für deine harte Arbeit.

Recommended Posts

Erstellen Sie einen Berechnungsbohrdruck
Lass uns ein Squashspiel machen
Machen Sie einen Funktionsdekorateur
Erstellen Sie eine Distanzmatrix
Ich mache ein Passwort!
Machen Sie einen Nyan-Knopf
Mach ein Spiel im Tetris-Stil!
Erstellen Sie einen Base64-Decoder
Lassen Sie uns mit Google Colaboratory ganz einfach ein mathematisches GIF erstellen
Machen wir einen Discord Bot.
Erstellen Sie ein Blueqat-Backend ~ Teil 1
Erstellen Sie ein Blueqat-Backend ~ Teil 2
[Django] Erstellen Sie ein Pulldown-Menü
Machen Sie einen LINE BOT (Chat)
Erstellen Sie ein Lesezeichen in Python
Machen Sie eine Lotterie mit Python
Machen Sie Responder zu einem Daemon (Dienst)
Wie erstelle ich eine japanisch-englische Übersetzung?
Lassen Sie uns eine Remote-Rumba erstellen [Software]
Machen Sie eine Tweet-Box für Pepper
Lassen Sie uns eine GUI mit Python erstellen.
Machen wir einen Spot Sale Service 2
Erstellen Sie mit TensorFlow eine Gesichtserkennung
Wie man einen lockeren Bot macht
Machen wir einen Spot Sale Service 1
Wie erstelle ich einen Crawler?
So erstellen Sie eine rekursive Funktion
Machen Sie die C-Kompilierung etwas einfacher
Python / Machen Sie ein Diktat aus einer Liste.
[Python] Machen Sie die Funktion zu einer Lambda-Funktion
Erstellen Sie ein Empfehlungssystem mit Python
[Blender] So erstellen Sie ein Blender-Plug-In
Machen Sie einen Filter mit einer Django-Vorlage
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Machen wir mit xCAT einen Spacon
Wie erstelle ich einen Crawler?
Erstellen Sie mit PySide einen Modelliterator
Machen Sie eine schöne Grafik mit Plotly
Machen Sie einen Vorhanggenerator mit Blender
Machen wir einen Spot Sale Service 3