{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Jupyter Notebook: Python Advanced (2023-11-22 - 2023-11-24)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Variables" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "a = 1" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n" ] } ], "source": [ "print(a)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "int" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(a)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "a = 'hallo'" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hallo\n" ] } ], "source": [ "print(a)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "str" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(a)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "t = type(a)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "print(t)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "type" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(t)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "class Foo:\n", " i = 666\n", " def __init__(self, i):\n", " self.i = i\n", " def bar(self):\n", " return self.i**2" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "type" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(Foo)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "s = str(666)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'666'" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "s = '666'" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "f = Foo(3)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f.i" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "9" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f.bar()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "__main__.Foo" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(f)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "type" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(type(f))" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "function" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(Foo.bar)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "import sys" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "module" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(sys)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "sys = 666" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "del sys" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Assignment, And IDs" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "a, b = 1, 2" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "a = b = 1" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "a = 42" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "139680347735568" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "id(a)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "b = a" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "139680347735568" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "id(b)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "b = 666" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "42" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "a = 42\n", "b = a" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "id(a) == id(b)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a is b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### (Im)Mutability" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "a += 1" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "43" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "42" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Speed Optimization" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "a = 43" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "b = 43" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a is b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And Lists? Lists are **mutable**!" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [], "source": [ "l1 = [1,2,3, 'vier']" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(l1)" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l1[2]" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [], "source": [ "l2 = l1" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l1 is l2" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "l1.append(5.0)" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 'vier', 5.0]" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l1" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 'vier', 5.0]" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l2" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [], "source": [ "l1 += [6, 7, 8]" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 'vier', 5.0, 6, 7, 8]" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l1" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 'vier', 5.0, 6, 7, 8]" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And Tuples? **Immutable**" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [], "source": [ "t1 = (1, 2, 3, 'vier')" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 'tuple' object has no attribute 'append'\n" ] } ], "source": [ "try:\n", " t1.append(5.0)\n", "except Exception as e:\n", " print(type(e), e)" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [], "source": [ "t2 = t1" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t2 is t1" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [], "source": [ "t2 += (6, 7, 8)" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t2 is t1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Tuple Unpacking" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [], "source": [ "a, b = 1, 2" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [], "source": [ "(a, b) = (1, 2)" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " cannot unpack non-iterable int object\n" ] } ], "source": [ "try:\n", " a, b = 1\n", "except Exception as e:\n", " print(type(e), e)" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1, 2)" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a, b" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [], "source": [ "tmp = b\n", "b = a\n", "a = tmp" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2, 1)" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a, b" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [], "source": [ "a, b = b, a" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1, 2)" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a, b" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [], "source": [ "d = {'one': 1, 'two': 2}" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dict" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(d)" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "one\n", "two\n" ] } ], "source": [ "for elem in d:\n", " print(elem)" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "one\n", "two\n" ] } ], "source": [ "for elem in d.keys():\n", " print(elem)" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "2\n" ] } ], "source": [ "for elem in d.values():\n", " print(elem)" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('one', 1)\n", "('two', 2)\n" ] } ], "source": [ "for elem in d.items():\n", " print(elem)" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "one 1\n", "two 2\n" ] } ], "source": [ "for elem in d.items():\n", " k = elem[0]\n", " v = elem[1]\n", " print(k, v)" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "one 1\n", "two 2\n" ] } ], "source": [ "for k, v in d.items():\n", " print(k, v)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Datatypes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Integers" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [], "source": [ "i = 0" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [], "source": [ "i = -1" ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [], "source": [ "i = 2**64-1" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0xffffffffffffffff'" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hex(i)" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [], "source": [ "i += 1" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "18446744073709551616" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "i" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0x10000000000000000'" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hex(i)" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [], "source": [ "i**=10" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0x10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hex(i)" ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.5" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ "3/2" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ "3//2" ] }, { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "int" ] }, "execution_count": 88, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(3//2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Operator Overloading (Basics)" ] }, { "cell_type": "code", "execution_count": 89, "metadata": {}, "outputs": [], "source": [ "a = 3" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a - 2 " ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.__sub__(2)" ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.0" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a - 2.0" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "NotImplemented" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.__sub__(2.0)" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [], "source": [ "b = 2.0" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.0" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b.__rsub__(a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Datatype Conversions" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [], "source": [ "i = 666" ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [], "source": [ "s = str(i)" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'666'" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s" ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [], "source": [ "i = int(s)" ] }, { "cell_type": "code", "execution_count": 100, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "666" ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" } ], "source": [ "i" ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [], "source": [ "s = 'abc'" ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " invalid literal for int() with base 10: 'abc'\n" ] } ], "source": [ "try:\n", " int(s)\n", "except Exception as e:\n", " print(type(e), e)" ] }, { "cell_type": "code", "execution_count": 103, "metadata": {}, "outputs": [], "source": [ "i = int(s, 16)" ] }, { "cell_type": "code", "execution_count": 104, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2748" ] }, "execution_count": 104, "metadata": {}, "output_type": "execute_result" } ], "source": [ "i" ] }, { "cell_type": "code", "execution_count": 105, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " invalid literal for int() with base 10: '0xabc'\n" ] } ], "source": [ "try:\n", " s = '0xabc'\n", " int(s)\n", "except Exception as e:\n", " print(type(e), e)" ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2748" ] }, "execution_count": 106, "metadata": {}, "output_type": "execute_result" } ], "source": [ "int(s, 16)" ] }, { "cell_type": "code", "execution_count": 107, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.3" ] }, "execution_count": 107, "metadata": {}, "output_type": "execute_result" } ], "source": [ "float('2.3')" ] }, { "cell_type": "code", "execution_count": 108, "metadata": {}, "outputs": [], "source": [ "def convert_to_int(obj):\n", " if type(obj) is int:\n", " return obj\n", " elif type(obj) is float:\n", " return int(obj)\n", " # ..." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Compound Datatypes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dictionary" ] }, { "cell_type": "code", "execution_count": 109, "metadata": {}, "outputs": [], "source": [ "d = {'one': 1, 'two': 2}" ] }, { "cell_type": "code", "execution_count": 110, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 110, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d['one']" ] }, { "cell_type": "code", "execution_count": 111, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 'three'\n" ] } ], "source": [ "try:\n", " d['three']\n", "except Exception as e:\n", " print(type(e), e)" ] }, { "cell_type": "code", "execution_count": 112, "metadata": {}, "outputs": [], "source": [ "d['three'] = 3" ] }, { "cell_type": "code", "execution_count": 113, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "None\n" ] } ], "source": [ "v = d.get('four')\n", "print(v)" ] }, { "cell_type": "code", "execution_count": 114, "metadata": {}, "outputs": [], "source": [ "v = d.get('four')\n", "if v is None:\n", " v = 4" ] }, { "cell_type": "code", "execution_count": 115, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4" ] }, "execution_count": 115, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d.get('four', 4)" ] }, { "cell_type": "code", "execution_count": 116, "metadata": {}, "outputs": [], "source": [ "v = d.get('four')\n", "if v is None:\n", " v = 4\n", " d['four'] = v" ] }, { "cell_type": "code", "execution_count": 117, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4" ] }, "execution_count": 117, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d['four']" ] }, { "cell_type": "code", "execution_count": 118, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5" ] }, "execution_count": 118, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d.setdefault('five', 5)" ] }, { "cell_type": "code", "execution_count": 119, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5" ] }, "execution_count": 119, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d['five']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Set" ] }, { "cell_type": "code", "execution_count": 120, "metadata": {}, "outputs": [], "source": [ "s = {1,2,3}" ] }, { "cell_type": "code", "execution_count": 121, "metadata": {}, "outputs": [], "source": [ "s.add(4)" ] }, { "cell_type": "code", "execution_count": 122, "metadata": {}, "outputs": [], "source": [ "s.remove(1)" ] }, { "cell_type": "code", "execution_count": 123, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 123, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(s)" ] }, { "cell_type": "code", "execution_count": 124, "metadata": {}, "outputs": [], "source": [ "s.add(4)" ] }, { "cell_type": "code", "execution_count": 125, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 125, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(s)" ] }, { "cell_type": "code", "execution_count": 126, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 126, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2 in s" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "``in`` on lists: performance!" ] }, { "cell_type": "code", "execution_count": 127, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 127, "metadata": {}, "output_type": "execute_result" } ], "source": [ "3 in s" ] }, { "cell_type": "code", "execution_count": 128, "metadata": {}, "outputs": [], "source": [ "l = [1, 2, 3]" ] }, { "cell_type": "code", "execution_count": 129, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1 in l" ] }, { "cell_type": "code", "execution_count": 130, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 130, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2 in l" ] }, { "cell_type": "code", "execution_count": 131, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 131, "metadata": {}, "output_type": "execute_result" } ], "source": [ "3 in l" ] }, { "cell_type": "code", "execution_count": 132, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 132, "metadata": {}, "output_type": "execute_result" } ], "source": [ "100 in l" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Kann man listen in sets konvertieren?" ] }, { "cell_type": "code", "execution_count": 133, "metadata": {}, "outputs": [], "source": [ "l = [1,2,3]\n", "s = set(l) # iterable" ] }, { "cell_type": "code", "execution_count": 134, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{1, 2, 3}" ] }, "execution_count": 134, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s" ] }, { "cell_type": "code", "execution_count": 135, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'a', 'b', 'c'}" ] }, "execution_count": 135, "metadata": {}, "output_type": "execute_result" } ], "source": [ "set('abc')" ] }, { "cell_type": "code", "execution_count": 136, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a\n", "b\n", "c\n" ] } ], "source": [ "for elem in 'abc':\n", " print(elem)" ] }, { "cell_type": "code", "execution_count": 137, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " set expected at most 1 argument, got 2\n" ] } ], "source": [ "try:\n", " set('abc', 'def')\n", "except Exception as e:\n", " print(type(e), e)" ] }, { "cell_type": "code", "execution_count": 138, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'abc'}" ] }, "execution_count": 138, "metadata": {}, "output_type": "execute_result" } ], "source": [ "set(['abc'])" ] }, { "cell_type": "code", "execution_count": 139, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'abc', 'def'}" ] }, "execution_count": 139, "metadata": {}, "output_type": "execute_result" } ], "source": [ "set(['abc', 'def'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### And Iterables? The Iterator Protocol!" ] }, { "cell_type": "code", "execution_count": 140, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{0, 1, 2}" ] }, "execution_count": 140, "metadata": {}, "output_type": "execute_result" } ], "source": [ "set(range(3))" ] }, { "cell_type": "code", "execution_count": 141, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n" ] } ], "source": [ "for elem in range(3):\n", " print(elem)" ] }, { "cell_type": "code", "execution_count": 142, "metadata": {}, "outputs": [], "source": [ "r = range(3)" ] }, { "cell_type": "code", "execution_count": 143, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "range" ] }, "execution_count": 143, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(r)" ] }, { "cell_type": "code", "execution_count": 144, "metadata": {}, "outputs": [], "source": [ "it = iter(r)" ] }, { "cell_type": "code", "execution_count": 145, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 145, "metadata": {}, "output_type": "execute_result" } ], "source": [ "next(it)" ] }, { "cell_type": "code", "execution_count": 146, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 146, "metadata": {}, "output_type": "execute_result" } ], "source": [ "next(it)" ] }, { "cell_type": "code", "execution_count": 147, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 147, "metadata": {}, "output_type": "execute_result" } ], "source": [ "next(it)" ] }, { "cell_type": "code", "execution_count": 148, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " \n" ] } ], "source": [ "try:\n", " next(it)\n", "except Exception as e:\n", " print(type(e), e)" ] }, { "cell_type": "code", "execution_count": 149, "metadata": {}, "outputs": [], "source": [ "def drei_ints():\n", " return [1,2,3]" ] }, { "cell_type": "code", "execution_count": 150, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "2\n", "3\n" ] } ], "source": [ "for elem in drei_ints():\n", " print(elem)" ] }, { "cell_type": "code", "execution_count": 151, "metadata": {}, "outputs": [], "source": [ "def drei_ints():\n", " print('eins')\n", " yield 1\n", " print('zwei')\n", " yield 2\n", " print('drei')\n", " yield 3\n", " print('und aus')" ] }, { "cell_type": "code", "execution_count": 152, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "eins\n", "1\n", "zwei\n", "2\n", "drei\n", "3\n", "und aus\n" ] } ], "source": [ "for elem in drei_ints():\n", " print(elem)" ] }, { "cell_type": "code", "execution_count": 153, "metadata": {}, "outputs": [], "source": [ "d = drei_ints()" ] }, { "cell_type": "code", "execution_count": 154, "metadata": {}, "outputs": [], "source": [ "it = iter(d)" ] }, { "cell_type": "code", "execution_count": 155, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "eins\n" ] }, { "data": { "text/plain": [ "1" ] }, "execution_count": 155, "metadata": {}, "output_type": "execute_result" } ], "source": [ "next(it)" ] }, { "cell_type": "code", "execution_count": 156, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "zwei\n" ] }, { "data": { "text/plain": [ "2" ] }, "execution_count": 156, "metadata": {}, "output_type": "execute_result" } ], "source": [ "next(it)" ] }, { "cell_type": "code", "execution_count": 157, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "drei\n" ] }, { "data": { "text/plain": [ "3" ] }, "execution_count": 157, "metadata": {}, "output_type": "execute_result" } ], "source": [ "next(it)" ] }, { "cell_type": "code", "execution_count": 158, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "und aus\n", " \n" ] } ], "source": [ "try:\n", " next(it)\n", "except Exception as e:\n", " print(type(e), e)" ] }, { "cell_type": "code", "execution_count": 159, "metadata": {}, "outputs": [], "source": [ "numbers = [0, 1, 2, 3, 4, 5]" ] }, { "cell_type": "code", "execution_count": 160, "metadata": {}, "outputs": [], "source": [ "squares = []\n", "for elem in numbers:\n", " squares.append(elem**2)" ] }, { "cell_type": "code", "execution_count": 161, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0, 1, 4, 9, 16, 25]" ] }, "execution_count": 161, "metadata": {}, "output_type": "execute_result" } ], "source": [ "squares" ] }, { "cell_type": "code", "execution_count": 162, "metadata": {}, "outputs": [], "source": [ "def squares(nums):\n", " sqs = []\n", " for elem in nums:\n", " sqs.append(elem**2)\n", " return sqs" ] }, { "cell_type": "code", "execution_count": 163, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "4\n", "9\n", "16\n", "25\n" ] } ], "source": [ "for elem in squares(numbers):\n", " print(elem)" ] }, { "cell_type": "code", "execution_count": 164, "metadata": {}, "outputs": [], "source": [ "def squares(nums):\n", " for elem in nums:\n", " yield elem**2" ] }, { "cell_type": "code", "execution_count": 165, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "4\n", "9\n", "16\n", "25\n" ] } ], "source": [ "for elem in squares(numbers):\n", " print(elem)" ] }, { "cell_type": "code", "execution_count": 166, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0, 1, 2, 3, 4, 5]" ] }, "execution_count": 166, "metadata": {}, "output_type": "execute_result" } ], "source": [ "numbers" ] }, { "cell_type": "code", "execution_count": 167, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0, 1, 4, 9, 16, 25]" ] }, "execution_count": 167, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[elem**2 for elem in numbers]" ] }, { "cell_type": "code", "execution_count": 168, "metadata": {}, "outputs": [], "source": [ "sqs = (elem**2 for elem in numbers)" ] }, { "cell_type": "code", "execution_count": 169, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "4\n", "9\n", "16\n", "25\n" ] } ], "source": [ "for sq in sqs:\n", " print(sq)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Strings" ] }, { "cell_type": "code", "execution_count": 170, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'zeile 1\\nzeile 2\\n'" ] }, "execution_count": 170, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'''\\\n", "zeile 1\n", "zeile 2\n", "'''" ] }, { "cell_type": "code", "execution_count": 171, "metadata": {}, "outputs": [], "source": [ "def foo(bar):\n", " '''\n", " Foos a bar.\n", " ``bar`` should be a str.\n", " '''\n", "\n", " return 'foo' + bar" ] }, { "cell_type": "code", "execution_count": 172, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'fooabc'" ] }, "execution_count": 172, "metadata": {}, "output_type": "execute_result" } ], "source": [ "foo('abc')" ] }, { "cell_type": "code", "execution_count": 173, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 173, "metadata": {}, "output_type": "execute_result" } ], "source": [ "foo" ] }, { "cell_type": "code", "execution_count": 174, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'\\n Foos a bar.\\n ``bar`` should be a str.\\n '" ] }, "execution_count": 174, "metadata": {}, "output_type": "execute_result" } ], "source": [ "foo.__doc__" ] }, { "cell_type": "code", "execution_count": 175, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on function foo in module __main__:\n", "\n", "foo(bar)\n", " Foos a bar.\n", " ``bar`` should be a str.\n", "\n" ] } ], "source": [ "help(foo)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Methods" ] }, { "cell_type": "code", "execution_count": 176, "metadata": {}, "outputs": [], "source": [ "s = 'mississippi'" ] }, { "cell_type": "code", "execution_count": 177, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 177, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s.count('ss')" ] }, { "cell_type": "code", "execution_count": 178, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 178, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pos = s.find('ss')\n", "pos" ] }, { "cell_type": "code", "execution_count": 179, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5" ] }, "execution_count": 179, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s.find('ss', pos+1)" ] }, { "cell_type": "code", "execution_count": 180, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-1" ] }, "execution_count": 180, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s.find('xx')" ] }, { "cell_type": "code", "execution_count": 181, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 181, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s.index('ss')" ] }, { "cell_type": "code", "execution_count": 182, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " substring not found\n" ] } ], "source": [ "try:\n", " s.index('xx')\n", "except Exception as e:\n", " print(type(e), e)" ] }, { "cell_type": "code", "execution_count": 183, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 183, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'data.csv'.endswith('.csv')" ] }, { "cell_type": "code", "execution_count": 184, "metadata": {}, "outputs": [], "source": [ "userline = 'jfasch:x:1000:1000: Jörg Faschingbauer :/home/jfasch:/bin/bash'" ] }, { "cell_type": "code", "execution_count": 185, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['jfasch',\n", " 'x',\n", " '1000',\n", " '1000',\n", " ' Jörg Faschingbauer ',\n", " '/home/jfasch',\n", " '/bin/bash']" ] }, "execution_count": 185, "metadata": {}, "output_type": "execute_result" } ], "source": [ "userline.split(':')" ] }, { "cell_type": "code", "execution_count": 186, "metadata": {}, "outputs": [], "source": [ "name, _, uid, gid, descr, home, shell = userline.split(':')" ] }, { "cell_type": "code", "execution_count": 187, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Jörg Faschingbauer'" ] }, "execution_count": 187, "metadata": {}, "output_type": "execute_result" } ], "source": [ "descr.strip()" ] }, { "cell_type": "code", "execution_count": 188, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "' Jörg Faschingbauer'" ] }, "execution_count": 188, "metadata": {}, "output_type": "execute_result" } ], "source": [ "descr.rstrip()" ] }, { "cell_type": "code", "execution_count": 189, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Jörg Faschingbauer'" ] }, "execution_count": 189, "metadata": {}, "output_type": "execute_result" } ], "source": [ "descr.strip(' \\t')" ] }, { "cell_type": "code", "execution_count": 190, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'örg Faschingbaue'" ] }, "execution_count": 190, "metadata": {}, "output_type": "execute_result" } ], "source": [ "descr.strip(' \\tJr')" ] }, { "cell_type": "code", "execution_count": 191, "metadata": {}, "outputs": [], "source": [ "user = ['jfasch', 'x', '1000', '1000', 'Joerg Faschingbauer', '/home/jfasch', '/bin/bash']" ] }, { "cell_type": "code", "execution_count": 192, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'jfasch:x:1000:1000:Joerg Faschingbauer:/home/jfasch:/bin/bash'" ] }, "execution_count": 192, "metadata": {}, "output_type": "execute_result" } ], "source": [ "':'.join(user)" ] }, { "cell_type": "code", "execution_count": 193, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "' XXX '" ] }, "execution_count": 193, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'XXX'.center(80)" ] }, { "cell_type": "code", "execution_count": 194, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'XXX'" ] }, "execution_count": 194, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'xxx'.upper()" ] }, { "cell_type": "code", "execution_count": 195, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'jfasch:x:1000:1000: Jörg Faschingbauer :/home/jfasch:/bin/bash'" ] }, "execution_count": 195, "metadata": {}, "output_type": "execute_result" } ], "source": [ "userline" ] }, { "cell_type": "code", "execution_count": 196, "metadata": {}, "outputs": [], "source": [ "name, _, _, _, descr, home, shell = userline.split(':')" ] }, { "cell_type": "code", "execution_count": 197, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'jfasch:x:1000:1000: Jörg Faschingbauer :/home/jfasch:/bin/bash'" ] }, "execution_count": 197, "metadata": {}, "output_type": "execute_result" } ], "source": [ "userline" ] }, { "cell_type": "code", "execution_count": 198, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['jfasch',\n", " 'x',\n", " '1000',\n", " '1000',\n", " ' Jörg Faschingbauer ',\n", " '/home/jfasch',\n", " '/bin/bash']" ] }, "execution_count": 198, "metadata": {}, "output_type": "execute_result" } ], "source": [ "userline.split(':')" ] }, { "cell_type": "code", "execution_count": 199, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['JFASCH',\n", " 'X',\n", " '1000',\n", " '1000',\n", " 'JÖRG FASCHINGBAUER',\n", " '/HOME/JFASCH',\n", " '/BIN/BASH']" ] }, "execution_count": 199, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[elem.strip().upper() for elem in userline.split(':')]" ] }, { "cell_type": "code", "execution_count": 200, "metadata": {}, "outputs": [], "source": [ "l = [300, 3, 20, 50, 101]" ] }, { "cell_type": "code", "execution_count": 201, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3\n", "20\n", "50\n" ] } ], "source": [ "for elem in filter(lambda x: x<55, l):\n", " print(elem)" ] }, { "cell_type": "code", "execution_count": 202, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[3, 20, 50]" ] }, "execution_count": 202, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[elem for elem in l if elem <55]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## File IO" ] }, { "cell_type": "code", "execution_count": 203, "metadata": {}, "outputs": [], "source": [ "f = open('/etc/passwd')" ] }, { "cell_type": "code", "execution_count": 204, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'root:x:0:0:root:/root:/bin/bash\\nbin:x:1:1:bin:/bin:/sbin/nologin\\ndaemon:x:2:2:daemon:/sbin:/sbin/nologin\\nadm:x:3:4:adm:/var/adm:/sbin/nologin\\nlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin\\nsync:x:5:0:sync:/sbin:/bin/sync\\nshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown\\nhalt:x:7:0:halt:/sbin:/sbin/halt\\nmail:x:8:12:mail:/var/spool/mail:/sbin/nologin\\noperator:x:11:0:operator:/root:/sbin/nologin\\ngames:x:12:100:games:/usr/games:/sbin/nologin\\nftp:x:14:50:FTP User:/var/ftp:/sbin/nologin\\nnobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin\\ndbus:x:81:81:System message bus:/:/sbin/nologin\\napache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin\\ntss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin\\nsystemd-network:x:192:192:systemd Network Management:/:/usr/sbin/nologin\\nsystemd-oom:x:999:999:systemd Userspace OOM Killer:/:/usr/sbin/nologin\\nsystemd-resolve:x:193:193:systemd Resolver:/:/usr/sbin/nologin\\nqemu:x:107:107:qemu user:/:/sbin/nologin\\npolkitd:x:998:997:User for polkitd:/:/sbin/nologin\\navahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin\\nunbound:x:997:995:Unbound DNS resolver:/etc/unbound:/sbin/nologin\\nnm-openconnect:x:996:994:NetworkManager user for OpenConnect:/:/sbin/nologin\\ngeoclue:x:995:993:User for geoclue:/var/lib/geoclue:/sbin/nologin\\nusbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin\\ngluster:x:994:992:GlusterFS daemons:/run/gluster:/sbin/nologin\\nrtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin\\nchrony:x:993:990::/var/lib/chrony:/sbin/nologin\\nsaslauth:x:992:76:Saslauthd user:/run/saslauthd:/sbin/nologin\\ndnsmasq:x:991:989:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin\\nrpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin\\ncolord:x:990:988:User for colord:/var/lib/colord:/sbin/nologin\\nrpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin\\nopenvpn:x:989:987:OpenVPN:/etc/openvpn:/sbin/nologin\\nnm-openvpn:x:988:986:Default user for running openvpn spawned by NetworkManager:/:/sbin/nologin\\npipewire:x:987:985:PipeWire System Daemon:/var/run/pipewire:/sbin/nologin\\nabrt:x:173:173::/etc/abrt:/sbin/nologin\\nflatpak:x:986:983:User for flatpak system helper:/:/sbin/nologin\\ngdm:x:42:42:GNOME Display Manager:/var/lib/gdm:/sbin/nologin\\ngnome-initial-setup:x:985:982::/run/gnome-initial-setup/:/sbin/nologin\\nvboxadd:x:984:1::/var/run/vboxadd:/sbin/nologin\\nsshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/sbin/nologin\\ntcpdump:x:72:72::/:/sbin/nologin\\njfasch:x:1000:1000:Jörg Faschingbauer:/home/jfasch:/bin/bash\\nsystemd-coredump:x:978:978:systemd Core Dumper:/:/usr/sbin/nologin\\nsystemd-timesync:x:977:977:systemd Time Synchronization:/:/usr/sbin/nologin\\nmosquitto:x:976:976:Mosquitto Broker:/etc/mosquitto:/sbin/nologin\\n'" ] }, "execution_count": 204, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f.read()" ] }, { "cell_type": "code", "execution_count": 205, "metadata": {}, "outputs": [], "source": [ "f = open('/etc/passwd')" ] }, { "cell_type": "code", "execution_count": 206, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['root:x:0:0:root:/root:/bin/bash\\n',\n", " 'bin:x:1:1:bin:/bin:/sbin/nologin\\n',\n", " 'daemon:x:2:2:daemon:/sbin:/sbin/nologin\\n',\n", " 'adm:x:3:4:adm:/var/adm:/sbin/nologin\\n',\n", " 'lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin\\n',\n", " 'sync:x:5:0:sync:/sbin:/bin/sync\\n',\n", " 'shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown\\n',\n", " 'halt:x:7:0:halt:/sbin:/sbin/halt\\n',\n", " 'mail:x:8:12:mail:/var/spool/mail:/sbin/nologin\\n',\n", " 'operator:x:11:0:operator:/root:/sbin/nologin\\n',\n", " 'games:x:12:100:games:/usr/games:/sbin/nologin\\n',\n", " 'ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin\\n',\n", " 'nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin\\n',\n", " 'dbus:x:81:81:System message bus:/:/sbin/nologin\\n',\n", " 'apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin\\n',\n", " 'tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin\\n',\n", " 'systemd-network:x:192:192:systemd Network Management:/:/usr/sbin/nologin\\n',\n", " 'systemd-oom:x:999:999:systemd Userspace OOM Killer:/:/usr/sbin/nologin\\n',\n", " 'systemd-resolve:x:193:193:systemd Resolver:/:/usr/sbin/nologin\\n',\n", " 'qemu:x:107:107:qemu user:/:/sbin/nologin\\n',\n", " 'polkitd:x:998:997:User for polkitd:/:/sbin/nologin\\n',\n", " 'avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin\\n',\n", " 'unbound:x:997:995:Unbound DNS resolver:/etc/unbound:/sbin/nologin\\n',\n", " 'nm-openconnect:x:996:994:NetworkManager user for OpenConnect:/:/sbin/nologin\\n',\n", " 'geoclue:x:995:993:User for geoclue:/var/lib/geoclue:/sbin/nologin\\n',\n", " 'usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin\\n',\n", " 'gluster:x:994:992:GlusterFS daemons:/run/gluster:/sbin/nologin\\n',\n", " 'rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin\\n',\n", " 'chrony:x:993:990::/var/lib/chrony:/sbin/nologin\\n',\n", " 'saslauth:x:992:76:Saslauthd user:/run/saslauthd:/sbin/nologin\\n',\n", " 'dnsmasq:x:991:989:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin\\n',\n", " 'rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin\\n',\n", " 'colord:x:990:988:User for colord:/var/lib/colord:/sbin/nologin\\n',\n", " 'rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin\\n',\n", " 'openvpn:x:989:987:OpenVPN:/etc/openvpn:/sbin/nologin\\n',\n", " 'nm-openvpn:x:988:986:Default user for running openvpn spawned by NetworkManager:/:/sbin/nologin\\n',\n", " 'pipewire:x:987:985:PipeWire System Daemon:/var/run/pipewire:/sbin/nologin\\n',\n", " 'abrt:x:173:173::/etc/abrt:/sbin/nologin\\n',\n", " 'flatpak:x:986:983:User for flatpak system helper:/:/sbin/nologin\\n',\n", " 'gdm:x:42:42:GNOME Display Manager:/var/lib/gdm:/sbin/nologin\\n',\n", " 'gnome-initial-setup:x:985:982::/run/gnome-initial-setup/:/sbin/nologin\\n',\n", " 'vboxadd:x:984:1::/var/run/vboxadd:/sbin/nologin\\n',\n", " 'sshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/sbin/nologin\\n',\n", " 'tcpdump:x:72:72::/:/sbin/nologin\\n',\n", " 'jfasch:x:1000:1000:Jörg Faschingbauer:/home/jfasch:/bin/bash\\n',\n", " 'systemd-coredump:x:978:978:systemd Core Dumper:/:/usr/sbin/nologin\\n',\n", " 'systemd-timesync:x:977:977:systemd Time Synchronization:/:/usr/sbin/nologin\\n',\n", " 'mosquitto:x:976:976:Mosquitto Broker:/etc/mosquitto:/sbin/nologin\\n']" ] }, "execution_count": 206, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f.readlines()" ] }, { "cell_type": "code", "execution_count": 207, "metadata": {}, "outputs": [], "source": [ "f = open('/etc/passwd')" ] }, { "cell_type": "code", "execution_count": 208, "metadata": {}, "outputs": [], "source": [ "del f" ] }, { "cell_type": "code", "execution_count": 209, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "root:x:0:0:root:/root:/bin/bash\n", "\n", "bin:x:1:1:bin:/bin:/sbin/nologin\n", "\n" ] } ], "source": [ "with open('/etc/passwd') as f:\n", " print(f.readline())\n", " print(f.readline())" ] }, { "cell_type": "code", "execution_count": 210, "metadata": {}, "outputs": [], "source": [ "f = open('/etc/passwd', 'r') # 'r' is default" ] }, { "cell_type": "code", "execution_count": 211, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "root:x:0:0:root:/root:/bin/bash\n", "\n", "bin:x:1:1:bin:/bin:/sbin/nologin\n", "\n", "daemon:x:2:2:daemon:/sbin:/sbin/nologin\n", "\n", "adm:x:3:4:adm:/var/adm:/sbin/nologin\n", "\n", "lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin\n", "\n", "sync:x:5:0:sync:/sbin:/bin/sync\n", "\n", "shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown\n", "\n", "halt:x:7:0:halt:/sbin:/sbin/halt\n", "\n", "mail:x:8:12:mail:/var/spool/mail:/sbin/nologin\n", "\n", "operator:x:11:0:operator:/root:/sbin/nologin\n", "\n", "games:x:12:100:games:/usr/games:/sbin/nologin\n", "\n", "ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin\n", "\n", "nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin\n", "\n", "dbus:x:81:81:System message bus:/:/sbin/nologin\n", "\n", "apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin\n", "\n", "tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin\n", "\n", "systemd-network:x:192:192:systemd Network Management:/:/usr/sbin/nologin\n", "\n", "systemd-oom:x:999:999:systemd Userspace OOM Killer:/:/usr/sbin/nologin\n", "\n", "systemd-resolve:x:193:193:systemd Resolver:/:/usr/sbin/nologin\n", "\n", "qemu:x:107:107:qemu user:/:/sbin/nologin\n", "\n", "polkitd:x:998:997:User for polkitd:/:/sbin/nologin\n", "\n", "avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin\n", "\n", "unbound:x:997:995:Unbound DNS resolver:/etc/unbound:/sbin/nologin\n", "\n", "nm-openconnect:x:996:994:NetworkManager user for OpenConnect:/:/sbin/nologin\n", "\n", "geoclue:x:995:993:User for geoclue:/var/lib/geoclue:/sbin/nologin\n", "\n", "usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin\n", "\n", "gluster:x:994:992:GlusterFS daemons:/run/gluster:/sbin/nologin\n", "\n", "rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin\n", "\n", "chrony:x:993:990::/var/lib/chrony:/sbin/nologin\n", "\n", "saslauth:x:992:76:Saslauthd user:/run/saslauthd:/sbin/nologin\n", "\n", "dnsmasq:x:991:989:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin\n", "\n", "rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin\n", "\n", "colord:x:990:988:User for colord:/var/lib/colord:/sbin/nologin\n", "\n", "rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin\n", "\n", "openvpn:x:989:987:OpenVPN:/etc/openvpn:/sbin/nologin\n", "\n", "nm-openvpn:x:988:986:Default user for running openvpn spawned by NetworkManager:/:/sbin/nologin\n", "\n", "pipewire:x:987:985:PipeWire System Daemon:/var/run/pipewire:/sbin/nologin\n", "\n", "abrt:x:173:173::/etc/abrt:/sbin/nologin\n", "\n", "flatpak:x:986:983:User for flatpak system helper:/:/sbin/nologin\n", "\n", "gdm:x:42:42:GNOME Display Manager:/var/lib/gdm:/sbin/nologin\n", "\n", "gnome-initial-setup:x:985:982::/run/gnome-initial-setup/:/sbin/nologin\n", "\n", "vboxadd:x:984:1::/var/run/vboxadd:/sbin/nologin\n", "\n", "sshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/sbin/nologin\n", "\n", "tcpdump:x:72:72::/:/sbin/nologin\n", "\n", "jfasch:x:1000:1000:Jörg Faschingbauer:/home/jfasch:/bin/bash\n", "\n", "systemd-coredump:x:978:978:systemd Core Dumper:/:/usr/sbin/nologin\n", "\n", "systemd-timesync:x:977:977:systemd Time Synchronization:/:/usr/sbin/nologin\n", "\n", "mosquitto:x:976:976:Mosquitto Broker:/etc/mosquitto:/sbin/nologin\n", "\n" ] } ], "source": [ "for line in f:\n", " print(line)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Encoding" ] }, { "cell_type": "code", "execution_count": 216, "metadata": {}, "outputs": [], "source": [ "f = open('/etc/passwd', encoding='ascii')" ] }, { "cell_type": "code", "execution_count": 217, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 'ascii' codec can't decode byte 0xc3 in position 2440: ordinal not in range(128)\n" ] } ], "source": [ "try:\n", " for line in f:\n", " print(line)\n", "except Exception as e:\n", " print(type(e), e)" ] }, { "cell_type": "code", "execution_count": 218, "metadata": {}, "outputs": [], "source": [ "f = open('/etc/passwd', encoding='utf-8')" ] }, { "cell_type": "code", "execution_count": 220, "metadata": {}, "outputs": [], "source": [ "for line in f:\n", " print(line)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Encoding" ] }, { "cell_type": "code", "execution_count": 221, "metadata": {}, "outputs": [], "source": [ "s = 'abc'" ] }, { "cell_type": "code", "execution_count": 222, "metadata": {}, "outputs": [], "source": [ "import sys" ] }, { "cell_type": "code", "execution_count": 223, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "52" ] }, "execution_count": 223, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sys.getsizeof(s)" ] }, { "cell_type": "code", "execution_count": 224, "metadata": {}, "outputs": [], "source": [ "s = 'a'" ] }, { "cell_type": "code", "execution_count": 225, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "50" ] }, "execution_count": 225, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sys.getsizeof(s)" ] }, { "cell_type": "code", "execution_count": 226, "metadata": {}, "outputs": [], "source": [ "s = 'Liebe Grüße, Jörg'" ] }, { "cell_type": "code", "execution_count": 229, "metadata": {}, "outputs": [], "source": [ "enc_s = s.encode('iso-8859-1')" ] }, { "cell_type": "code", "execution_count": 230, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "b'Liebe Gr\\xfc\\xdfe, J\\xf6rg'" ] }, "execution_count": 230, "metadata": {}, "output_type": "execute_result" } ], "source": [ "enc_s" ] }, { "cell_type": "code", "execution_count": 231, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "bytes" ] }, "execution_count": 231, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(enc_s)" ] }, { "cell_type": "code", "execution_count": 232, "metadata": {}, "outputs": [], "source": [ "enc_s_recvd = enc_s" ] }, { "cell_type": "code", "execution_count": 233, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Liebe Grќпe, Jіrg'" ] }, "execution_count": 233, "metadata": {}, "output_type": "execute_result" } ], "source": [ "enc_s_recvd.decode('iso-8859-5')" ] }, { "cell_type": "code", "execution_count": 234, "metadata": {}, "outputs": [], "source": [ "lg = '祝好'" ] }, { "cell_type": "code", "execution_count": 235, "metadata": {}, "outputs": [ { "ename": "UnicodeEncodeError", "evalue": "'latin-1' codec can't encode characters in position 0-1: ordinal not in range(256)", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mUnicodeEncodeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/tmp/ipykernel_81650/1521975281.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mlg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'iso-8859-1'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mUnicodeEncodeError\u001b[0m: 'latin-1' codec can't encode characters in position 0-1: ordinal not in range(256)" ] } ], "source": [ "lg.encode('iso-8859-1')" ] }, { "cell_type": "code", "execution_count": 236, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "b'\\xaf\\xac\\xa6n'" ] }, "execution_count": 236, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lg.encode('big5')" ] }, { "cell_type": "code", "execution_count": 237, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 237, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(lg)" ] }, { "cell_type": "code", "execution_count": 238, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "b'\\xe7\\xa5\\x9d\\xe5\\xa5\\xbd'" ] }, "execution_count": 238, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lg.encode('utf-8')" ] }, { "cell_type": "code", "execution_count": 239, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "b'\\xff\\xfe\\x00\\x00]y\\x00\\x00}Y\\x00\\x00'" ] }, "execution_count": 239, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lg.encode('utf-32')" ] }, { "cell_type": "code", "execution_count": 240, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'祝好'" ] }, "execution_count": 240, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lg" ] }, { "cell_type": "code", "execution_count": 241, "metadata": {}, "outputs": [], "source": [ "joerg = 'Jörg'" ] }, { "cell_type": "code", "execution_count": 242, "metadata": {}, "outputs": [], "source": [ "lg_joerg = lg + ', ' + joerg " ] }, { "cell_type": "code", "execution_count": 247, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "b'\\xe7\\xa5\\x9d\\xe5\\xa5\\xbd, J\\xc3\\xb6rg'" ] }, "execution_count": 247, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lg_joerg.encode('utf-8')" ] }, { "cell_type": "code", "execution_count": 248, "metadata": {}, "outputs": [], "source": [ "f = open('/etc/passwd', encoding='utf-8')" ] }, { "cell_type": "code", "execution_count": 249, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'root:x:0:0:root:/root:/bin/bash\\n'" ] }, "execution_count": 249, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f.readline()" ] }, { "cell_type": "code", "execution_count": 252, "metadata": {}, "outputs": [], "source": [ "f = open('/etc/passwd', 'br')" ] }, { "cell_type": "code", "execution_count": 254, "metadata": {}, "outputs": [], "source": [ "content = f.readline()" ] }, { "cell_type": "code", "execution_count": 256, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " can't concat str to bytes\n" ] } ], "source": [ "try:\n", " content += joerg\n", "except Exception as e:\n", " print(type(e), e)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ``numpy``, ``pandas``, ``matplotlib``" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "f = open('data.csv')" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "import csv" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "rdr = csv.DictReader(f, delimiter=';')" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '44.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '44.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '44.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '44.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '44.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-1.0'}\n", "{'LinksUnten': '44.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '44.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '44.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '44.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '44.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.0'}\n", "{'LinksUnten': '44.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '44.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '44.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '1.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.809'}\n", "{'LinksUnten': '44.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.588'}\n", "{'LinksUnten': '44.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.0'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.309'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.588'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.809'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-0.951'}\n", "{'LinksUnten': '45.0', 'RechtsOben': '33.0', 'MeinSinusSensor': '-1.0'}\n" ] } ], "source": [ "for obj in rdr:\n", " print(obj)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "import pandas" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "df = pandas.read_csv('data.csv', delimiter=';')" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "pandas.core.frame.DataFrame" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(df)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LinksUntenRechtsObenMeinSinusSensor
045.033.00.000
145.033.00.309
245.033.00.588
345.033.00.809
445.033.00.951
............
25145.033.0-0.309
25245.033.0-0.588
25345.033.0-0.809
25445.033.0-0.951
25545.033.0-1.000
\n", "

256 rows × 3 columns

\n", "
" ], "text/plain": [ " LinksUnten RechtsOben MeinSinusSensor\n", "0 45.0 33.0 0.000\n", "1 45.0 33.0 0.309\n", "2 45.0 33.0 0.588\n", "3 45.0 33.0 0.809\n", "4 45.0 33.0 0.951\n", ".. ... ... ...\n", "251 45.0 33.0 -0.309\n", "252 45.0 33.0 -0.588\n", "253 45.0 33.0 -0.809\n", "254 45.0 33.0 -0.951\n", "255 45.0 33.0 -1.000\n", "\n", "[256 rows x 3 columns]" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "sinvalues = df['MeinSinusSensor']" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "pandas.core.series.Series" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(sinvalues)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 0.000\n", "1 0.309\n", "2 0.588\n", "3 0.809\n", "4 0.951\n", " ... \n", "251 -0.309\n", "252 -0.588\n", "253 -0.809\n", "254 -0.951\n", "255 -1.000\n", "Name: MeinSinusSensor, Length: 256, dtype: float64" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sinvalues" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LinksUnten 45.000\n", "RechtsOben 33.000\n", "MeinSinusSensor 0.951\n", "Name: 4, dtype: float64" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.iloc[4]" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 0.000\n", "1 0.309\n", "2 0.588\n", "3 0.809\n", "4 0.951\n", " ... \n", "251 -0.309\n", "252 -0.588\n", "253 -0.809\n", "254 -0.951\n", "255 -1.000\n", "Name: MeinSinusSensor, Length: 256, dtype: float64" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sinvalues" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "256" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(df)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "import numpy" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "timestamps = numpy.linspace(0,1,len(df))" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "numpy.ndarray" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(timestamps)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(256,)" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "timestamps.shape" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 0.000\n", "1 0.309\n", "2 0.588\n", "3 0.809\n", "4 0.951\n", " ... \n", "251 -0.309\n", "252 -0.588\n", "253 -0.809\n", "254 -0.951\n", "255 -1.000\n", "Name: MeinSinusSensor, Length: 256, dtype: float64" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sinvalues" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "pandas.core.series.Series" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(sinvalues)" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(timestamps, sinvalues)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.11" } }, "nbformat": 4, "nbformat_minor": 4 }