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.
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
Dieses Mal werden die zweistellige Addition, Subtraktion und Multiplikation auf dem Druck ausgegeben.
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.
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.
das ist alles. Danke für deine harte Arbeit.
Recommended Posts