Commit 9e5ab29b authored by r.grosso's avatar r.grosso
Browse files

Add exercise with case insensitive sorting

parent 3071c57c
%% Cell type:markdown id: tags:
### Aufgabe 1 b)
In Python 2 benutze raw_input für Strings und input für Integers, in Python 3 input und eval(input)
%% Cell type:code id: tags:
``` python
name = input("Please enter your name:")
name = raw_input("Schreibe deinen Namen, bitte:")
age = int(input("Hallo ", name, ". In welchem Jahr bist du geboren? "))
import datetime
now = datetime.datetime.now()
age = now.year - age
print("Du bist ", age, " Jahre alt (oder wirst dieses Jahr werden)")
```
%% Output
Please enter your name:FA
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-12-7cf67f3e360a> in <module>()
----> 1 name = input("Please enter your name:")
2
3 age = int(input("Hallo ", name, ". In welchem Jahr bist du geboren? "))
4
5 import datetime
/home/rgrosso/.local/lib/python2.7/site-packages/ipykernel/ipkernel.pyc in <lambda>(prompt)
162 self._sys_eval_input = builtin_mod.input
163 builtin_mod.raw_input = self.raw_input
--> 164 builtin_mod.input = lambda prompt='': eval(self.raw_input(prompt))
165 self._save_getpass = getpass.getpass
166 getpass.getpass = self.getpass
/home/rgrosso/.local/lib/python2.7/site-packages/ipykernel/ipkernel.pyc in <module>()
NameError: name 'FA' is not defined
%% Cell type:markdown id: tags:
### Aufgabe 2 a)
%% Cell type:code id: tags:
``` python
liste = []
for _ in range(10):
liste.append(int(input()))
gerade_liste = [x for x in liste if x%2==0 ]
str(gerade_liste)
```
%% Cell type:markdown id: tags:
### Aufgabe 2 b)
%% Cell type:code id: tags:
``` python
sentence = input("Please write your sentence:")
sentence = raw_input("Please write your sentence:")
revsentence = ' '.join(sentence.split()[::-1])
print(revsentence)
```
%% Output
Please write your sentence:"a b c d e"
e d c b a
%% Cell type:markdown id: tags:
### Aufgabe 2 c)
### Aufgabe 2 c), d)
%% Cell type:code id: tags:
``` python
sentence = input("Please write your sentence:")
alpha_ordered = sorted(sentence.split())
sentence = raw_input("Please write your sentence:")
alpha_ordered = sorted(sentence.split(), key = lambda v: v.lower())
rev_alpha_ordered = ' '.join(alpha_ordered[::-1])
print(rev_alpha_ordered)
```
%% Output
Please write your sentence:"aa ab ba df fa el la id un nu"
un nu la id fa el df ba ab aa
Please write your sentence:"Un asdf lsf Lsf Asdia um"
Un um Lsf lsf Asdia asdf
%% Cell type:markdown id: tags:
### Aufgabe 2 d)
### Aufgabe 2 e)
%% Cell type:code id: tags:
``` python
birthMonths = {"Einstein":3, "Hawking":1, "Newton":1, "Franklin":1, "Darwin":2, "Curie":11, "Pasteur":12,
"Copernicus":1, "Fleming":8, "Nobel":10, "Mendelev":2, "Bohr":10, "Mendel":7, "Faraday":9,
"Watson":4, "Hubble":11, "Feynman":5, "Rutherford":8}
month = input("Choose a name:")
print(birthMonths[month])
name = raw_input("Choose a scientist name:")
if isinstance(name, str):
try:
print(birthMonths[name])
except KeyError:
print("Invalid name")
else:
print("Enter the chosen name in quotes")
```
%% Output
Choose a name:"Nobel"
10
Choose a scientist name:Darwin
2
%% Cell type:markdown id: tags:
### Aufgabe 3 a)
%% Cell type:code id: tags:
``` python
import random
print("Rate eine Zahl zwischen 0 und 9. Schreibe \"exit\" um zu stoppen.")
for _ in range(10):
rndnum = random.randint(0,9)
usernum = (input("Rate mal: "))
if usernum == "exit" or usernum == "Exit":
print("Bis nächstes Mal ...")
break
try:
usernum = int(usernum)
except ValueError:
print(usernum + " ist keine Zahl!")
if usernum < 0 or usernum > 9:
print("Gültige Zahlen sind zwischen 0 und 9!")
elif rndnum == usernum:
print("************** Gut geraten! ************")
break
else:
print("Sorry, die Zahl war: " + str(rndnum))
print("Versuch nochmal!")
if _ == 9:
print("Zuviele Versuche! Bis nächstes Mal ...")
```
%% Output
Rate eine Zahl zwischen 0 und 9. Schreibe "exit" um zu stoppen.
Rate mal: 3
Sorry, die Zahl war: 2
Versuch nochmal!
Rate mal: 4
Sorry, die Zahl war: 1
Versuch nochmal!
Rate mal: 5
Sorry, die Zahl war: 6
Versuch nochmal!
Rate mal: 6
Sorry, die Zahl war: 4
Versuch nochmal!
Rate mal: 7
Sorry, die Zahl war: 0
Versuch nochmal!
Rate mal: 8
Sorry, die Zahl war: 3
Versuch nochmal!
Rate mal: 9
Sorry, die Zahl war: 1
Versuch nochmal!
Rate mal: 2
************** Gut geraten! ************
%% Cell type:markdown id: tags:
### Aufgabe 4 a)
%% Cell type:code id: tags:
``` python
in_file_str = "sampletext.txt"
out_file_str = "sampletext_nonewlines.txt"
try:
with open(in_file_str) as input_file:
try:
with open(out_file_str, 'w') as output_file:
for line in input_file:
output_file.write(line.replace('\n',' '))
except:
print("Cannot open output file " + out_file_str + "!")
except:
print("Input file " + in_file_str + " with text expected!")
```
%% Cell type:markdown id: tags:
### Aufgabe 4 b)
%% Cell type:code id: tags:
``` python
import json
in_out_file = "geburts_daten.json"
# First write the dictionary to file
with open(in_out_file, 'w') as datenFile:
json.dump(birthMonths, datenFile)
# We read the dictionary from file into a new dictionary
with open(in_out_file,'r') as datenFile:
udBirths = json.load(datenFile)
while True:
name = input("Schreibe einen neuen Namen zu hinzufügen, sonst 'exit':")
if name == 'exit' or name == 'Exit':
break
else:
bmonth = input("Schreibe die entsprechende Geburtsmonate als Nummer: ")
udBirths[name] = bmonth
with open(in_out_file, 'w') as datenFile:
json.dump(udBirths, datenFile)
```
%% Output
Schreibe einen neuen Namen zu hinzufügen, sonst 'exit':"Maxwell"
Schreibe die entsprechende Geburtsmonate als Nummer: 6
Schreibe einen neuen Namen zu hinzufügen, sonst 'exit':'exit'
%% Cell type:code id: tags:
``` python
print(udBirths.values())
```
%% Output
[1, 11, 1, 1, 11, 6, 8, 2, 8, 10, 5, 4, 1, 2, 3, 7, 9, 10, 12]
%% Cell type:markdown id: tags:
### Aufgabe 5 a)
%% Cell type:code id: tags:
``` python
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
labels = ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
plt.hist(udBirths.values(), np.arange(0.5, 12.51, 1.0))
#plt.xticks([1,2,3,4,5,6,7,8,9,10,11,12], labels, rotation='vertical')
#plt.hist(udBirths.values(), 12)
```
%% Output
(array([4., 2., 1., 1., 1., 1., 1., 2., 1., 2., 2., 1.]),
array([ 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5,
11.5, 12.5]),
<a list of 12 Patch objects>)
%% Cell type:markdown id: tags:
### Aufgabe 6 a)
%% Cell type:code id: tags:
``` python
def ungerade(size):
print(size * " ---")
def gerade(size):
print(size * "| " + "|")
size = input("Wie groß soll der Spielbrett sein? ")
for _ in range(size):
ungerade(size)
gerade(size)
ungerade(size)
```
%% Output
Wie groß soll der Spielbrett sein? 10
--- --- --- --- --- --- --- --- --- ---
| | | | | | | | | | |
--- --- --- --- --- --- --- --- --- ---
| | | | | | | | | | |
--- --- --- --- --- --- --- --- --- ---
| | | | | | | | | | |
--- --- --- --- --- --- --- --- --- ---
| | | | | | | | | | |
--- --- --- --- --- --- --- --- --- ---
| | | | | | | | | | |
--- --- --- --- --- --- --- --- --- ---
| | | | | | | | | | |
--- --- --- --- --- --- --- --- --- ---
| | | | | | | | | | |
--- --- --- --- --- --- --- --- --- ---
| | | | | | | | | | |
--- --- --- --- --- --- --- --- --- ---
| | | | | | | | | | |
--- --- --- --- --- --- --- --- --- ---
| | | | | | | | | | |
--- --- --- --- --- --- --- --- --- ---
%% Cell type:code id: tags:
``` python
```
......
......@@ -40,6 +40,7 @@
\item Schreibe ein Programm, welches die Worte eines Satz, der im Terminal eingegeben wird, in umgekehrter Reihenfolge wieder ausgibt. \Hinweis{Benutze \texttt{[::-1]} als besondere ``\textit{extended slice syntax}''}
\\ \Hinweis{``\textit{Das ist ein Haus.}'' wird zu ``\textit{Haus ein ist Das.}''}.
\item Schreibe ein Programm, welches alle Worte eines Satzes, der im Terminal eingegeben wird, in umgekehrter alphabetischer Ordnung ausgibt.
\item Wie in der vorherigen Übung, aber Groß- und Kleinschreibung werden nicht unterschieden. \Hinweis{\texttt{sort} oder \texttt{sorted} können als ``\texttt{key=}'' Argument eine Lambda-Funktion gegeben werden \ldots}
\item Schreibe ein Programm, welches ein Schlüsselwert-Verzeichnis (\textit{dictionary}) mit z.B. zehn Name => Geburtsmonate Schlüssel-Wert-Paaren enthält. Das Programm
gibt die Geburtsmonate für den vom User über das Terminal gewählten Namen aus.
\end{enumerate}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment