Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

334 autogenerate vorlagepy #402

Merged
merged 11 commits into from
Aug 8, 2024
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions common/generate_vorlage.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# [ ! -f 'vorlage.py.dummy' ] || cp loesung.py vorlage.py
# [ ! -f 'vorlage.py.dummy' ] || find . -name 'vorlage.py' \
# -exec sed -i -e '/# begin solution/,/# end solution/d' {} \;

FILES := $(sort $(wildcard */loesung*.py))

define gen_vorlage =
grep -q '# begin solution' $(1) && : >$(dir $1)vorlage.py
@[ ! -f "$(dir $1)vorlage.py" ] || cp $(1) $(dir $1)vorlage.py
@[ ! -f "$(dir $1)vorlage.py" ] || sed -i -e '/# begin solution/,/# end solution/d' $(dir $1)vorlage.py
endef

all: $(FILES)
$(foreach loesung, $(FILES), $(call gen_vorlage,$(loesung));)
1 change: 1 addition & 0 deletions exercises-toolbox/.gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
*.pdf
*.dummy
vorlage.py
FB53-Coronafallzahlen.csv
4 changes: 2 additions & 2 deletions exercises-toolbox/1-python/1-greetings/aufgabe.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

1. Aufgabe:

Öffne die Datei "greetings.py". Eine Liste von Strings wurde bereits
Öffne die Datei "vorlage.py". Eine Liste von Strings wurde bereits
vorbereitet. Füge deinen Namen an einer beliebigen Stelle der Liste ein. Prüfe,
ob du alles richtig gemacht hast, indem du das Programm mit "python greetings.py"
ob du alles richtig gemacht hast, indem du das Programm mit "python vorlage.py"
laufen lässt. Es sollten keinerlei Fehlermeldungen erscheinen.

2. Aufgabe:
Expand Down
11 changes: 0 additions & 11 deletions exercises-toolbox/1-python/1-greetings/greetings.py

This file was deleted.

10 changes: 10 additions & 0 deletions exercises-toolbox/1-python/1-greetings/loesung.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,14 @@
names = ["World", "Toolbox Workshop", "Kevin"]


# hier ergänzen
# begin solution
for name in names:
print("Hello " + name)
# end solution

# Gewünschte Ausgabe:
# Hello World
# Hello Toolbox Workshop
# Hello Kevin
# Hello <Dein Name>
2 changes: 1 addition & 1 deletion exercises-toolbox/1-python/2-average/aufgabe.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@

Aufgabe:

In der beiliegenden Python-Datei `average.py` ist eine Liste mit Zahlen
In der beiliegenden Python-Datei `vorlage.py` ist eine Liste mit Zahlen
vorbereitet. Berechne ihren arithmetischen Mittelwert und gib ihn aus.
3 changes: 0 additions & 3 deletions exercises-toolbox/1-python/2-average/average.py

This file was deleted.

3 changes: 3 additions & 0 deletions exercises-toolbox/1-python/2-average/loesung.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
data = [42, 3.1415, 2.7182, 1, 2]

# Hier den Mittelwert berechnen und ausgeben
# begin solution
avg = 0
for x in data:
avg += x
Expand All @@ -11,3 +13,4 @@
avg = sum(data) / len(data)

print("Der Mittelwert ist ", avg)
# end solution
2 changes: 1 addition & 1 deletion exercises-toolbox/1-python/3-fizzbuzz/aufgabe.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Angeblich eine beliebte Aufgabe in Bewerbungsgesprächen für Programmierer.

Aufgabe:

Öffne die Datei "fizzbuzz.py" und ergänze sie wie folgt: Gib die Zahlen von 1
Öffne die Datei "vorlage.py" und ergänze sie wie folgt: Gib die Zahlen von 1
bis 100 aus, wobei du aber Zahlen, die durch 3 teilbar sind, durch "Fizz" und
Zahlen, die durch 5 teilbar sind, durch "Buzz" ersetzt. Ist eine Zahl sowohl
durch 3 als auch durch 5 teilbar, so gib stattdessen "Fizzbuzz" aus.
Expand Down
3 changes: 0 additions & 3 deletions exercises-toolbox/1-python/3-fizzbuzz/fizzbuzz.py

This file was deleted.

3 changes: 3 additions & 0 deletions exercises-toolbox/1-python/3-fizzbuzz/loesung.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
for n in range(1, 101):
# Programm ergänzen / ändern
# begin solution
if n % 3 == 0 and n % 5 == 0:
print("Fizzbuzz")
elif n % 3 == 0:
print("Fizz")
elif n % 5 == 0:
print("Buzz")
else:
# end solution
print(n)
2 changes: 2 additions & 0 deletions exercises-toolbox/1-python/4-histogram/loesung.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# begin solution
def histogram(nums):
for num in nums:
if num < 0:
Expand All @@ -6,4 +7,5 @@ def histogram(nums):
print(num * "*")


# end solution
histogram([6, 2, -1, 10, 1, 8])
2 changes: 2 additions & 0 deletions exercises-toolbox/1-python/5-readwrite/loesung1.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# begin solution
import sys

if len(sys.argv) > 1:
Expand All @@ -7,3 +8,4 @@

with open(filename, "r") as f:
print(f.read())
# end solution
2 changes: 2 additions & 0 deletions exercises-toolbox/1-python/5-readwrite/loesung2.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
# begin solution
with open("test.txt", "w") as f:
f.write(str(42))
# end solution
2 changes: 2 additions & 0 deletions exercises-toolbox/1-python/6-wordcount/loesung1.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# begin solution
with open("text.txt") as f:
words = f.read().split()

Expand All @@ -18,3 +19,4 @@ def get_count(x):

for key, count in result[:20]:
print(f"{key}: {count}")
# end solution
2 changes: 2 additions & 0 deletions exercises-toolbox/1-python/6-wordcount/loesung2.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# begin solution
with open("text.txt") as f:
words = f.read().split()

Expand All @@ -19,3 +20,4 @@ def get_count(x):

for key, count in result[:20]:
print(f"{key}: {count}")
# end solution
2 changes: 2 additions & 0 deletions exercises-toolbox/1-python/6-wordcount/loesung3.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# begin solution
from collections import Counter

with open("text.txt") as f:
Expand All @@ -7,3 +8,4 @@

for key, count in counts.most_common(20):
print("{}: {}".format(key, count))
# end solution
30 changes: 0 additions & 30 deletions exercises-toolbox/1-python/7-fstrings/fstrings.py

This file was deleted.

24 changes: 24 additions & 0 deletions exercises-toolbox/1-python/7-fstrings/loesung.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# Für die 1. und 2. Aufgabe:
title = "Wiegen von Metallen"
date = "24.09.2018"

Expand All @@ -6,26 +7,48 @@
masses = [9.1, 10.29, 12.485, 130.01]

# Für die 1. Aufgabe:
# Gewünschte Ausgabe:
# Versuch: Wiegen von Metallen durchgeführt am 24.09.2018
print()
# begin solution
print("Versuch:", title, "durchgeführt am", date)
# end solution

# Ausgabe mit Anführungszeichen:
# Versuch 'Wiegen von Metallen' durchgeführt am 24.09.2018
print()
# begin solution
print("Versuch:", "'" + title + "'", "durchgeführt am", date)
# end solution

# Für die 2. Aufgabe:
# print(f"")
# begin solution
print() # Für den Abstand zur letzten Lösung
# Versuch: Wiegen von Metallen durchgeführt am 24.09.2018
print(f"Versuch: {title} durchgeführt am {date}")

# Versuch 'Wiegen von Metallen' durchgeführt am 24.09.2018
print(f"Versuch: '{title}' durchgeführt am {date}")
# end solution

# Für die 3.Aufgabe:
# begin solution
print() # Für den Abstand zur letzten Lösung
# end solution
for metal, mass in zip(metals, masses):
print()
# begin solution
print(f"{metal}: {mass}")
# end solution

# Gewünschte Ausgabe:
# Eisen: 9.1
# Kupfer: 10.29
# Zink: 12.485
# Blei: 130.01

# begin solution
# Für die 4.Aufgabe:
print() # Für den Abstand zur letzten Lösung
for metal, mass in zip(metals, masses):
Expand All @@ -38,3 +61,4 @@
for metal, mass in zip(metals, masses):
offset = 11 - len(metal)
print(f"{metal}:", f"{mass:>{offset}.2f}")
# end solution
1 change: 1 addition & 0 deletions exercises-toolbox/1-python/Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
include ../../common/common.mk
include ../../common/loesung.py.mk
include ../../common/generate_vorlage.mk

all: 5-readwrite/test.txt

Expand Down
Loading