Ich bin neu hier... ich sitz schon den halben Samstag an einem Problem:
Ich wollte für meinen Unterricht (ich bin Grundschullehrer) ein Script schreiben, dass mit automatisch die Buchstaben von Wörtern durcheinanderwürfelt. Das habe ich geschafft. Als nächste wollte ich, dass das Script die Wörter, die es per TXT einliest, als SVG ausgibt, damit ich es dann in Affinity Designer bearbeiten kann.
Soweit, sogut, aber ich schaffe es nicht, dass mir Wort für Wort als eigene Buchstabensuppe ausgegeben wird, sondern das Script legt die Buchstaben aller Eingabewörter immer wieder über dieselbe Stelle.
Code: Alles auswählen
import random
import svgwrite
def scramble_word_letters(word):
letters = list(word)
random.shuffle(letters)
return "".join(letters)
def scramble_words_within_sentence(sentence):
words = sentence.strip().split()
scrambled_words = [scramble_word_letters(word) for word in words]
return scrambled_words
def scramble_words_to_svg(file_in):
with open(file_in, "r") as f_in:
file_out = file_in.replace(".txt", "") + "_output.svg"
dwg = svgwrite.Drawing(file_out, profile='tiny', size=(200, 200))
x = 20
y = 20 # initial y position
for line in f_in:
scrambled_sentences = scramble_words_within_sentence(line)
for word in scrambled_sentences:
for letter in word:
dwg.add(dwg.text(letter, insert=(x + random.uniform(-0.8, 0.8), y + random.uniform(-0.8, 0.8)), font_size=12))
x += 20
y += 20
if x + 20 > 180:
x = 20
if y + 20 > 180:
y = 20
dwg.save()
file_name = input("Enter the name of the input file: ")
scramble_words_to_svg(file_name)
https://imgur.com/C8ROIbv
Und das wird daraus:
https://imgur.com/UFAO4cg