Skip to content
Snippets Groups Projects
Commit ebaa98b7 authored by Jocelyne's avatar Jocelyne
Browse files

pfn1

parent 5a3a1b9f
Branches
No related tags found
No related merge requests found
Showing
with 462 additions and 0 deletions
.DS_Store 0 → 100644
File added
.PHONY:test
test:
@./loops.py | diff - loops-out.txt
@echo "Congratulations: $@ passed"
.PHONE:clean
clean:
@${RM} -r __pycache__
==== 1 =====
1
4
7
==== 2 =====
0 10
1 9
2 8
3 7
4 6
==== 3 =====
10
9
8
7
6
5
4
3
2
1
0
-1
-2
-3
-4
-5
-6
-7
-8
-9
==== 4 =====
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env python3
n = 10
# [1] convert to while loop:
print("==== 1 =====")
i = 1
while i < n:
print(i)
i += 3
# [2] convert to for loop:
print("==== 2 =====")
for k in range(0, n):
if (k >= n-k):
break
print(k, n-k)
# [3] convert to while loop:
print("==== 3 =====")
k = n
while k > -n:
print(k)
k -= 1
# [4] convert to for loop:
print("==== 4 =====")
for k in range(1,n+1):
print(k)
#!/usr/bin/env python3
n = 10
# [1] convert to while loop:
print("==== 1 =====")
for i in range(1, n, 3):
print(i)
# [2] convert to for loop:
print("==== 2 =====")
i = 0
j = n
while i < j:
print(i, j)
i += 1
j -= 1
# [3] convert to while loop:
print("==== 3 =====")
for i in range(n, -n, -1):
print(i)
# [4] convert to for loop:
print("==== 4 =====")
i = 1
while True:
print(i)
i += 1
if i > n:
break
# Zuerst tragen Sie bitte f"ur den Platzhalter
# h unten die Anzahl der Stunden, die sie f"ur die
# Aufgabe aufgewendet haben, ein. Das k"onnen auch Flie"spunkt-Werte sein,
# also z.B. 1.5, wenn Sie 1 Stunde und 30 Minuten ben"otigt haben.
Bearbeitungszeit: 0.5 Stunden
# Als n"achstes tragen Sie bitte ein, wie schwierig
# Sie die Aufgabe fanden. Die m"oglichen Werte sind vorgegeben. Bitte
# die Werte streichen, die nicht zutreffen:
Schwierigkeitsgrad: leicht
# Schliesslich tragen Sie bitte ein, wie verst"andlich die
# Aufgabenstellung formuliert war. Die m"oglichen Werte sind vorgegeben.
# Bitte die Werte streichen, die nicht zutreffen.
Aufgabenstellung: vollkommen klar
# Falls eine der beiden letzten Kategorien zutrifft, bitte
# kurz angeben, worin die Unklarheiten bestehen.
__pycache__
.PHONY:test
test:test10 test_err
@echo "Congratulations: $@ passed"
.PHONY:test10
test10:
@./zahlenreihen.py 10 | diff - zahlenreihenk10.txt
@echo "Congratulations: $@ passed"
test_err:
@./check_err.py
@echo "Congratulations: $@ passed"
.PHONE:clean
clean:
@${RM} -r __pycache__
#!/usr/bin/env python3
from mysubprocess import mysubprocess_expect
mysubprocess_expect('./zahlenreihen.py',1,
'Usage: ./zahlenreihen.py <k>')
mysubprocess_expect('./zahlenreihen.py abc',1,
'./zahlenreihen.py: cannot convert "abc" to int')
mysubprocess_expect('./zahlenreihen.py -3',1,
'./zahlenreihen.py: parameter -3 is not positive int')
import sys, subprocess, shlex
def stream2string(stream):
s = str()
for cc in stream.decode():
s += cc
return s.rstrip()
def mysubprocess(cmd_line):
cmd_args = shlex.split(cmd_line)
thispipe = subprocess.Popen(cmd_args,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout_encoded_stream, stderr_encoded_stream = thispipe.communicate(0)
rc = thispipe.returncode
stdout_str = stream2string(stdout_encoded_stream)
stderr_err = stream2string(stderr_encoded_stream)
return rc, stdout_str, stderr_err
def mysubprocess_expect(cmd_line,expected_err_code,expected_err_msg = None):
rc, stdout_str, stderr_str = mysubprocess(cmd_line)
if rc != expected_err_code:
sys.stderr.write(\
'{}: cmd_line="{}", err_code = {} != {} = expected_err_code\n'
.format(sys.argv[0],cmd_line,rc,expected_err_code))
exit(1)
if expected_err_msg and stderr_str != expected_err_msg:
sys.stderr.write(\
'{}: cmd_line="{}",\nstderr_str = "{}" !=\n \
"{}" = expected_err_msg\n'
.format(sys.argv[0],cmd_line,stderr_str,expected_err_msg))
exit(1)
#!/usr/bin/env python3
import sys
################### Eingabe Überprüfungen ##############
if len(sys.argv) != 2:
sys.stderr.write('Usage: {} <k>\n'.format(sys.argv[0]))
exit(1)
try:
k = int(sys.argv[1])
except ValueError as err:
formatstring = '{}: cannot convert "{}" to int\n'
sys.stderr.write(formatstring.format(sys.argv[0],sys.argv[1]))
exit(1)
if k <= 0:
formatstring = "{}: parameter {} is not positive int\n"
sys.stderr.write(formatstring.format(sys.argv[0],sys.argv[1]))
exit(1)
################### eigentliche Berechnungen ############
print("Reihe a")
sum = 0
for i in range(2,2*k+1,2):
print(i)
sum += i
print("Summe: {}".format(sum))
print("Reihe b")
divisor = 2
sum = 0
for i in range(1,k+1):
y = (3 + 2*i) / divisor
print("{:.5e}".format(y))
sum += y
divisor = divisor * 2
print("Summe: {:.5e}".format(sum))
print("Reihe c")
sum = 0
y = 1
for i in range(1,k+1):
print("{:.5e}".format(y))
sum += y
y = y * (-1/2)
print("Summe: {:.5e}".format(sum))
print("Reihe d")
y = 1
sum = 0
for i in range(1,k+1):
y = y/i
print("{:.5e}".format(y))
sum += y
print("Summe: {:.5e}".format(sum))
Reihe a
2
4
6
8
10
12
14
16
18
20
Summe: 110
Reihe b
2.50000e+00
1.75000e+00
1.12500e+00
6.87500e-01
4.06250e-01
2.34375e-01
1.32812e-01
7.42188e-02
4.10156e-02
2.24609e-02
Summe: 6.97363e+00
Reihe c
1.00000e+00
-5.00000e-01
2.50000e-01
-1.25000e-01
6.25000e-02
-3.12500e-02
1.56250e-02
-7.81250e-03
3.90625e-03
-1.95312e-03
Summe: 6.66016e-01
Reihe d
1.00000e+00
5.00000e-01
1.66667e-01
4.16667e-02
8.33333e-03
1.38889e-03
1.98413e-04
2.48016e-05
2.75573e-06
2.75573e-07
Summe: 1.71828e+00
# Zuerst tragen Sie bitte f"ur den Platzhalter
# h unten die Anzahl der Stunden, die sie f"ur die
# Aufgabe aufgewendet haben, ein. Das k"onnen auch Flie"spunkt-Werte sein,
# also z.B. 1.5, wenn Sie 1 Stunde und 30 Minuten ben"otigt haben.
Bearbeitungszeit: 2 Stunden
# Als n"achstes tragen Sie bitte ein, wie schwierig
# Sie die Aufgabe fanden. Die m"oglichen Werte sind vorgegeben. Bitte
# die Werte streichen, die nicht zutreffen:
Schwierigkeitsgrad: sehr schwer
# Schliesslich tragen Sie bitte ein, wie verst"andlich die
# Aufgabenstellung formuliert war. Die m"oglichen Werte sind vorgegeben.
# Bitte die Werte streichen, die nicht zutreffen.
Aufgabenstellung: vollkommen klar
# Falls eine der beiden letzten Kategorien zutrifft, bitte
# kurz angeben, worin die Unklarheiten bestehen.
__pycache__
.PHONY:test
test:test_positive test_err
@echo "Congratulations: $@ passed"
.PHONY:test_positive
test_positive:
@./run.sh | diff - quersummen.txt
@echo "Congratulations: $@ passed"
.PHONY:test_err
test_err:
@./check_err.py
@echo "Congratulations: $@ passed"
.PHONE:clean
clean:
@${RM} -r __pycache__
#!/usr/bin/env python3
from mysubprocess import mysubprocess_expect
mysubprocess_expect('./quersumme.py',1,
'Usage: ./quersumme.py <integer>')
mysubprocess_expect('./quersumme.py 1.5',1,
'./quersumme.py: argument "1.5" is not an integer')
mysubprocess_expect('./quersumme.py a1',1,
'./quersumme.py: argument "a1" is not an integer')
import sys, subprocess, shlex
def stream2string(stream):
s = str()
for cc in stream.decode():
s += cc
return s.rstrip()
def mysubprocess(cmd_line):
cmd_args = shlex.split(cmd_line)
thispipe = subprocess.Popen(cmd_args,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout_encoded_stream, stderr_encoded_stream = thispipe.communicate(0)
rc = thispipe.returncode
stdout_str = stream2string(stdout_encoded_stream)
stderr_err = stream2string(stderr_encoded_stream)
return rc, stdout_str, stderr_err
def mysubprocess_expect(cmd_line,expected_err_code,expected_err_msg = None):
rc, stdout_str, stderr_str = mysubprocess(cmd_line)
if rc != expected_err_code:
sys.stderr.write(\
'{}: cmd_line="{}", err_code = {} != {} = expected_err_code\n'
.format(sys.argv[0],cmd_line,rc,expected_err_code))
exit(1)
if expected_err_msg and stderr_str != expected_err_msg:
sys.stderr.write(\
'{}: cmd_line="{}",\nstderr_str = "{}" !=\n \
"{}" = expected_err_msg\n'
.format(sys.argv[0],cmd_line,stderr_str,expected_err_msg))
exit(1)
#!/usr/bin/env python3
import sys
import re
#################### Fehler-Behandlung ###############
if len(sys.argv) != 2:
formatstring = 'Usage: {} <integer>\n'
sys.stderr.write(formatstring.format(sys.argv[0]))
exit(1)
arg = sys.argv[1]
x = arg.strip()
zahl = re.search(r'([+-]?\d+)',x)
if zahl.group(1) != x:
formatstring_int = '{}: argument "{}" is not an integer\n'
sys.stderr.write(formatstring_int.format(sys.argv[0],arg))
exit(1)
#################### Quersumme berechnen ###############
x_abs = re.sub(r'[+-]','',x)
search_term = '(\d)'
ziffern = re.findall(r'{}'.format(search_term),x_abs)
quersumme = 0
for ziffer in ziffern:
quersumme += ord(ziffer) - 48
print('{}\t{}'.format(x,quersumme))
123 6
-99 18
-99 18
-200 2
+1234 10
+1234 10
+1234 10
1235 11
1235 11
#!/bin/sh
set -e -x
./quersumme.py 123
./quersumme.py -99
./quersumme.py ' -99'
./quersumme.py '-200 '
./quersumme.py +1234
./quersumme.py ' +1234 '
./quersumme.py '+1234 '
./quersumme.py ' 1235'
./quersumme.py '1235 '
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment