-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUebung Funktionen 2.py
129 lines (103 loc) · 3.92 KB
/
Uebung Funktionen 2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# 1. Schreibe eine Funktion, die deinen Namen und dein Alter als Argumente
# übernimmt und beides in einem Satz ausgibt.
print("Aufgabe 1\n")
def name(meinName:str, alter:int):
print(f"Mein Name ist {meinName} und ich bin {alter} Jahre alt.")
name("Stefan", 54)
# 2. Schreibe die Funktion aus 1 so um, dass sie einen formatierten String
# zurück gibt. Dokumentiere dabei intern alle Argumente und Rückgabewerte,
# sowie deren Datentyp.
print("\nAufgabe 2\n")
def name2(meinName:str, alter:int|float)->str:
'''
@brief: Gibt einen formatierten Vorstellungstext zurück.\n
@param1: Hier soll der Name hin.\n
@param2: Hier soll das Alter hin.\n
@return: Ein formatierter String.
'''
return f"Mein Name ist {meinName} und ich bin {alter} Jahre alt."
print(name2("Stefan", 54))
# 3. Schreibe eine Funktion "Münzwurf", die einen solchen simuliert. Die Häufigkeit
# soll als Argument übergeben werden.
print("\nAufgabe 3\n")
def flipCoin()->None:
'''
@brief: Simuliert einen Münzwurf
'''
import random
coin=["Kopf", "Zahl"]
print(coin[random.randint(0,1)])
flipCoin()
# 4. Schreibe eine Funktion zur Kreisberechnung, die zwei Argumente übernimmt: einen Zahlenwert
# und einen String, der aussagt, ob dieser Zahlenwert als Radius, Umfang oder Fläche zu verstehen ist.
# Radius soll dabei als Defaultwert eingestellt sein. Die Funktion soll dann die jeweils restlichen
# Werte ausgeben.
print("\nAufgabe 4\n")
def kreis(val:int|float, mod:str="r")->None:
'''
mod bezeichnet, welchen Wert die übergebene
Variable darstellt
Radius="r" Durchmesser="d"
Fläche="a" Umfang="u"
'''
from math import pi, sqrt
match mod:
case "r":
d=2*val
a=pi*val**2
u=pi*2*val
print(f"Durchmesser: {round(d, 2)}, Flaeche: {round(a, 2)}, Umfang: {round(u, 2)}")
case "d":
r=val/2
a=(pi*val**2)/4
u=pi*val
print(f"Radius: {round(r, 2)}, Flaeche: {round(a, 2)}, Umfang: {round(u, 2)}")
case "a":
r=sqrt(val/pi)
d=2*r
u=pi*2*r
print(f"Radius: {round(r, 2)}, Durchmesser: {round(d, 2)}, Umfang: {round(u, 2)}")
case "u":
r=val/(2*pi)
d=2*r
a=pi*r**2
print(f"Radius: {round(r, 2)}, Durchmesser: {round(d, 2)}, Flaeche: {round(a, 2)}")
kreis(10)
kreis(20, "a")
# 5. Schreibe einen Passwortgenerator, der als Argument die Länge des Passwortes übernimmt
# und dieses zurück gibt.
print("\nAufgabe 5\n")
def pwgenSimple(pwLength):
from string import hexdigits, punctuation
from random import sample
pwPool=hexdigits + punctuation
return "".join(sample(pwPool, pwLength))
print(pwgenSimple(20))
# 6. Schreiben einen weiteren Passwortgenerator, der als Argumente die Anzahl der Zeichen
# aus dem Bereich der Kleinbuchstaben, der Großbuchstaben, der Zahlen und der Sonderzeichen
# übernimmt und ein entsprechendes Passwort zurück gibt.
print("\nAufgabe 6\n")
def pwgenPro1(lows:int, caps:int, nums:int, specs:int=0)->str:
from random import sample, shuffle
from string import ascii_lowercase, ascii_uppercase, digits, punctuation
lowLetters=sample(ascii_lowercase, lows)
capLetters=sample(ascii_uppercase, caps)
numbers=sample(digits, nums)
specChar=sample(punctuation, specs)
pw=[]
pw.extend(lowLetters+capLetters+numbers+specChar)
shuffle(pw)
return "".join(pw)
print(pwgenPro1(2,3,4,4))
def pwgenPro2(lows:int, caps:int, nums:int, specs:int=0)->str:
from random import sample, shuffle
lowLetters=sample(range(97, 123), lows)
capLetters=sample(range(65, 91), caps)
numbers=sample(range(48, 58), nums)
specChar=sample(range(35, 39), specs)
pw=[]
pw.extend(lowLetters+capLetters+numbers+specChar)
pw=[chr(num) for num in pw]
shuffle(pw)
return "".join(pw)
print(pwgenPro2(2,3,4,4))