{ "cells": [ { "cell_type": "code", "execution_count": 3, "id": "9dc6429f", "metadata": {}, "outputs": [], "source": [ "# always start like this, keep our notation the same\n", "\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "from math import *" ] }, { "cell_type": "code", "execution_count": 4, "id": "3db7f2ee", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5\n" ] } ], "source": [ "# this is a variable\n", "\n", "x=5\n", "print(x)" ] }, { "cell_type": "code", "execution_count": 16, "id": "a838f0d1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4.59\n", "4.6\n", "5\n", "there is no x\n" ] } ], "source": [ "# variable types, python is dynamically typed, no declartions needed\n", "\n", "x='4.59'\n", "print(float(x))\n", "print(round(float(x),1))\n", "print(int(round(float(x),0)))\n", "\n", "del x # destroy variable\n", "try:\n", " print(x)\n", "except:\n", " print('there is no x')\n", "# raise" ] }, { "cell_type": "code", "execution_count": 30, "id": "f07a7170-a220-4d08-bdee-539a95c86e2f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "1\n", "1.5\n" ] } ], "source": [ "# operations\n", "\n", "# +,-,*,/\n", "\n", "# integer division\n", "print(5 // 3)\n", "\n", "# modulus (remainder)\n", "print(9 % 2)\n", "print(4.5 % 3)\n", "\n", "# note: exponentiation is ** not ^ (that one is bit switch)" ] }, { "cell_type": "code", "execution_count": 17, "id": "cc99c16c-761a-4e0d-baa2-e480c9562656", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "21\n", "8\n" ] } ], "source": [ "# Euclid's algorithm for finding the greatest common divisor of two numbers, gcd(a,b)\n", "\n", "a, b = 1071, 462\n", "while b:\n", " a, b = b, a % b\n", "print(a)\n", "\n", "print(10^2)" ] }, { "cell_type": "code", "execution_count": 6, "id": "a35e91c4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "This is a string\n", "T\n", "s \n", " is a stri\n" ] } ], "source": [ "# strings are not numbers\n", "\n", "strng = 'This is a string'\n", "print(strng)\n", "print(strng[0])\n", "print(strng[3:5])\n", "print(strng[4:-2])" ] }, { "attachments": { "Screen%20Shot%202023-10-11%20at%204.16.29%20PM.png": { "image/png": "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QAAEQAAEQAAEtCcAAUP7IoKBIAACIAACIAACIAACIAACIAACIAACEDBQB0AABEAABEAABEAABEAABEAABEAABLQnAAFD+yKCgSAAAiAAAiAAAiAAAiAAAiAAAiAAAhAwUAdAAARAAARAAARAAARAAARAAARAAAS0JwABQ/sigoEgAAIgAAIgAAIgAAIgAAIgAAIgAAIQMFAHQAAEQAAEQAAEQAAEQAAEQAAEQAAEtCcAAUP7IoKBIAACIAACIAACIAACIAACIAACIAACEDBQB0AABEAABEAABEAABEAABEAABEAABLQnAAFD+yKCgSAAAiAAAiAAAiAAAiAAAiAAAiAAAhAwUAdAAARAAARAAARAAARAAARAAARAAAS0JwABQ/sigoEgAAIgAAIgAAIgAAIgAAIgAAIgAAIQMFAHQAAEQAAEQAAEQAAEQAAEQAAEQAAEtCcAAUP7IoKBIAACIAACIAACIAACIAACIAACIAACEDBQB0AABEAABEAABEAABEAABEAABEAABLQnoLWA0erc82jLli3aQ4SBIAACIAACIAACIAACIAACIAACIBBFAkWKFKEvv/5Ki6xpLWBUrVyFNmz8QQtQMAIEQAAEQAAEQAAEQAAEQAAEQAAEMo2ATv1yCBiZVvuQXxAAARAAARAAARAAARAAARAAARCwSQACRghB2TQZyUAABEAABEAABEAABEAABEAABEAgMgQgYNgsSp1A2TQZyUAABEAABEAABEAABEAABEAABEAgMgR06pdjCElkqhUyAgIgAAIgAAIgAAIgAAIgAAIgAALuEoCAYZOnTqBsmoxkIAACIAACIAACIAACIAACIAACIBAZAjr1y+GBEZlqhYyAAAiAAAiAAAiAAAiAAAiAAAiAgLsEIGDY5KkTKJsmIxkIgAAIgAAIgAAIgAAIgAAIgAAIRIaATv1yeGBEplohIyAAAiAAAiAAAiAAAiAAAiAAAiDgLgEIGDZ56gTKpslIBgIgAAIgAAIgAAIgAAIgAAIgAAKRIaBTvxweGJGpVsgICIAACIAACIAACIAACIAACIAACLhLAAKGTZ46gbJpMpKBAAiAAAiAAAiAAAiAAAiAAAiAQGQI6NQvhwdGZKoVMgICIAACIAACIAACIAACIAACIAAC7hKAgGGTp06gbJqMZCAAAiAAAiAAAiAAAiAAAiAAAiAQGQI6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BIKFABIYwUIW40UECEECA1uBEgEkMJSIaNy7CSiNLOJjREAKATeqjUhlHD0hAgoEUJ1EAQjeIgKIQIEgcO3aNY8RbUgc1H1Q5adAqgETjVAEkMCI0Iq1USw3rctRAsNGRWJQREAWAbOSF80+/4IUuelG2ejRHyIQUgR+fPppcuybtdJp1pySRGJat5b2jx4RAUQAEUAEEAFEoOAQQAKj4LB3a8pIYEjWjJuAkswyekMEAhDYP/8tsnvurIDnag/+XqQoSXh1Nrm9ToLaa3yGCLgGAbOSGPXfWkBurFDeNfnHjCACiAAigAggAoiAOgLcuDsYdQfj7ugQATety1ECA9sjIhAkBFBtJEjAYrSuQcAsiVHlmedQEsM1tYcZQQQQAUQAEUAEEAFEQA4BJDDkcMJTSCRxQm/uRADVRtxZL5grZxFAdRJn8cTYEAFEABFABBABRAARcBsCSGBI1oibgJLMMnpDBAhKXmAjiDYEUBIj2mocy4sIIAKIACKACCAC0YSAm9blqEISTS0PyxoSBDI++ojsePl/Umn9u059UnvmTFKoWDEp/+gJEXArAnDE6s6XppKc/ztvmMV/xsSResw2TPE77jD0ix4QAUQAEUAEEAFEABFABAoWASQwJPF3E1CSWUZviIAHgd8++phsf/lFXTSKlriJtExZg+SFLkr4MpwQABLjp/HP6mYZyItmySt0/eBLRAARQAQQAUQAEUAEEAH3IOCmdTlKYLinXWBOIgwBvdNHgLyomTQNTxuJsDrH4hCip04C5EWtaTPwNBJsKIgAIoAIIAKIACKACIQRAkhgSFaWm4CSzDJ6QwQCEBCJDDwmNQAefBChCIhERpF/3kjwGNUIrWgsFiKACCACiAAigAhEPAJuWpejBEbENzcsYEEjgARGQdcApl8QCCCBURCoY5qIACKACCACiAAigAg4jwASGJKYugkoySyjN0QAEUAEEAFEABFABBABRAARQAQQAUQgYhBw07ocJTAipllhQRABRAARQAQQAUQAEUAEEAFEABFABBABZxFAAkMSTzcBJZll9IYIIAKIACKACCACiAAigAggAogAIoAIRAwCblqXowRGxDQrLAgigAggAogAIoAIIAKIACKACCACiAAi4CwCSGBI4ukmoCSzjN4QAUQAEUAEEAFEABFABBABRAARQAQQgYhBwE3rcpTAiJhmhQVBBBABRAARQAQQAUQAEUAEEAFEABFABJxFAAkMSTzdBJRkltEbIoAIIAKIACKACCACiAAigAggAogAIhAxCLhpXY4SGBHTrLAgiAAigAggAogAIoAIIAKIACKACCACiICzCCCBIYmnm4CSzDJ6QwQQAUQAEUAEEAFEABFABBABRAARQAQiBgE3rctRAiNimhUWBBFABBABRAARQAQQAUQAEUAEEAFEABFwFgEkMCTxdBNQkllGb4gAIoAIIAKIACKACCACiAAigAggAohAxCDgpnU5SmBETLPCgiACiAAigAggAogAIoAIIAKIACKACCACziKABIYknm4CSjLL6A0RQAQQAUQAEUAEEAFEABFABBABRAARiBgE3LQuRwmMiGlWWBBEABFABBABRAARQAQQAUQAEUAEEAFEwFkEkMCQxNNNQElmGb0hAogAIoAIIAKIACKACCACiAAigAggAhGDgJvW5SiBETHNCguCCCACiAAigAggAogAIoAIIAKIACKACDiLABIYknjWe6AuOXbsmKRv9IYIIAKIACKACCACiAAigAggAogAIoAIIAJOIlC8eHGyZ99eJ6O0HJerJTAslwoDIgKIACKACCACiAAigAggAogAIoAIIAKIQEQhgARGRFUnFgYRQAQQAUQAEUAEEAFEABFABBABRAARiEwEkMCIzHrFUiECiAAigAggAogAIoAIIAKIACKACCACEYUAEhgRVZ1YGEQAEUAEEAFEABFABBABRAARQAQQAUQgMhFAAiMy6xVLhQggAogAIoAIIAKIACKACCACiAAigAhEFAJIYERUdWJhEAFEABFABBABRAARQAQQAUQAEUAEEIHIRAAJjMisVywVIoAIIAKIACKACCACiAAigAggAogAIhBRCCCBEVHViYVBBBABRAARQAQQAUQAEUAEEAFEABFABCITASQwIrNesVSIACKACCACiAAigAggAogAIoAIIAKIQEQhgARGRFUnFgYRQAQQAUQAEUAEEAFEABFABBABRAARiEwEkMCIzHrFUiECiAAigAggAogAIoAIIAKIACKACCACEYUAEhgRVZ1YGEQAEUAEEAFEABFABBABRAARQAQQAUQgMhFAAiMy6xVLhQggAogAIoAIIAKIACKACCACiAAigAhEFAJIYERUdWJhgo4AvUh+376RpH75Gflwbx0y98OB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CCCAAAIIIIAAAgi4ECCB4QKPSRFAAAEEEEAAAQQQQAABBBBAwBsBEhjeOFMKAggggAACCCCAAAIIIIAAAgi4ECCB4QKPSRFAAAEEEEAAAQQQQAABBBBAwBsBEhjeOFMKAggggAACCCCAAAIIIIAAAgi4ECCB4QKPSRFAAAEEEEAAAQQQQAABBBBAwBsBEhjeOFMKAggggAACCCCAAAIIIIAAAgi4ECCB4QKPSRFAAAEEEEAAAQQQQAABBBBAwBsBEhjeOFMKAggggAACCCCAAAIIIIAAAgi4ECCB4QKPSRFAAAEEEEAAAQQQQAABBBBAwBsBEhjeOFMKAggggAACCCCAAAIIIIAAAgi4ECCB4QKPSRFAAAEEEEAAAQQQQAABBBBAwBsBEhjeOFMKAggggAACCCCAAAIIIIAAAgi4ECCB4QKPSRFAAAEEEEAAAQQQQAABBBBAwBsBEhjeOFMKAggggAACCCCAAAIIIIAAAgi4ECCB4QKPSRFAAAEEEEAAAQQQQAABBBBAwBsBEhjeOFMKAggggAACCCCAAAIIIIAAAgi4ECCB4QKPSRFAAAEEEEAAAQQQQAABBBBAwBsBEhjeOFMKAggggAACCCCAAAIIIIAAAgi4ECCB4QKPSRFAAAEEEEAAAQQQQAABBBBAwBsBEhjeOFMKAggggAACCCCAAAIIIIAAAgi4EPgfmZnH+kSS2h4AAAAASUVORK5CYII=" } }, "cell_type": "markdown", "id": "38f9d20d", "metadata": {}, "source": [ "![Screen%20Shot%202023-10-11%20at%204.16.29%20PM.png](attachment:Screen%20Shot%202023-10-11%20at%204.16.29%20PM.png)" ] }, { "cell_type": "code", "execution_count": 7, "id": "395b72ef", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "roto\n", "roto\n", "oton\n" ] }, { "ename": "TypeError", "evalue": "can only concatenate str (not \"int\") to str", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[7], line 8\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[38;5;28mprint\u001b[39m(x[\u001b[38;5;241m2\u001b[39m:])\n\u001b[1;32m 7\u001b[0m n\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m5\u001b[39m\n\u001b[0;32m----> 8\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[43mx\u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43mn\u001b[49m\u001b[38;5;241m+\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28mprint\u001b[39m(x\u001b[38;5;241m+\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m+\u001b[39m\u001b[38;5;28mstr\u001b[39m(n)\u001b[38;5;241m+\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;241m+\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnext line\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", "\u001b[0;31mTypeError\u001b[0m: can only concatenate str (not \"int\") to str" ] } ], "source": [ "# slicing strings and concatenation\n", "\n", "x='proton'\n", "print(x[1:5])\n", "print(x[1:-1])\n", "print(x[2:])\n", "n=5\n", "print(x+n+'\\n')\n", "print(x+' '+str(n)+'\\n'+'next line')" ] }, { "cell_type": "code", "execution_count": 8, "id": "e8e585e6-4274-440b-8dbc-d128a1344c31", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'ruhtrA gniK'" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# string striding\n", "\n", "s = 'King Arthur'\n", "s[::2]\n", "#'Kn rhr'\n", "s[1::2]\n", "#'igAtu'\n", "s[-1:4:-1]\n", "#'ruhtrA'\n", "# This last slice can be explained as a selection of characters from the last \n", "# (index -1) down to (but not including) character at index 4, with stride -1 \n", "# (select every character, in the reverse direction).\n", "\n", "# A convenient way of reversing a string is to slice between default limits \n", "# (by omitting the first and last indexes) with a stride of -1:\n", "\n", "s[::-1]\n", "#'ruhtrA gniK'" ] }, { "cell_type": "code", "execution_count": 13, "id": "70d3bd9e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PROTON\n", "Strip me\n", "True\n", "0005\n", " 5.0000\n", "pi is 3.1416\n", "False\n", "Java Python C++ Fortran\n", "['Java', 'Python', 'C++', 'Fortran']\n", "Java, Python, C++, Fortran\n", "Java!\n", "Python!\n", "C++!\n", "Fortran\n" ] }, { "data": { "text/plain": [ "True" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# string methods\n", "\n", "x='proton'\n", "print(x.upper())\n", "print(' Strip me '.strip())\n", "print('10'.isdigit())\n", "a=5\n", "print('%4.4i' % a)\n", "print('%10.4f' % a)\n", "\n", "print('pi is','%10.4f' % pi) # got it from math module\n", "\n", "a = 'java python c++ fortran'\n", "print(a.isalpha())\n", "# False\n", "# a.isalpha() is False because of the spaces and '++'.\n", "\n", "b = a.title()\n", "print(b)\n", "# 'Java Python C++ Fortran'\n", "print(b.split())\n", "print(', '.join(b.split()))\n", "c = b.replace(' ', '!\\n')\n", "c\n", "#'Java!\\nPython!\\nC++!\\nFortran'\n", "print(c)\n", "#Java!\n", "#Python!\n", "#C++!\n", "#Fortran!\n", "c.index('Python')\n", "#6\n", "c[6:].startswith('Py')\n", "#True\n", "c[6:12].isalpha()\n", "#True\n", "\n", "# here is a good list of string methods\n", "# https://www.digitalocean.com/community/tutorials/python-string-functions" ] }, { "cell_type": "code", "execution_count": 10, "id": "f964ff73", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "012345678\n", "abcd ef\n", "ab*cd**ef\n", "ab cdef\n", " 362500\n", " 362,500\n", "00013\n", " -13\n", " +13\n", " 13\n", " 3.142 \n", "1,234.568\n", "1.235e+03\n", "After iteration 012 the solution was 3.15\n" ] } ], "source": [ "# formatting\n", "\n", "# strings\n", "print('012345678')\n", "print('ab{:5s}ef'.format('cd'))\n", "print('ab{0:*^5s}ef'.format('cd'))\n", "print('ab{[a]: >5s}ef'.format({'a': 'cd'}))\n", "\n", "# integers\n", "print('{:8d}'.format(362500))\n", "print('{:>8,d}'.format(362500))\n", "print('{0:>05d}'.format(13))\n", "print('{0:>+5d}'.format(-13))\n", "print('{0:>+5d}'.format(13))\n", "print('{0:> 5d}'.format(13))\n", "\n", "# floats\n", "print('{:^10.3f}'.format(3.14159))\n", "print('{0:8,.3f}'.format(1234.56789))\n", "print('{0:8,.3e}'.format(1234.56789))\n", "print(\"After iteration %03d the solution was %.2f\" % (12, 3.1456))" ] }, { "cell_type": "code", "execution_count": 14, "id": "10b3169a-f6c0-43fd-a98b-7f78814ead9e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1900 is not a leap year\n" ] } ], "source": [ "# The Gregorian calendar\n", "\n", "year = 1900\n", "\n", "if not year % 400:\n", " is_leap_year = True\n", "elif not year % 100:\n", " is_leap_year = False\n", "elif not year % 4:\n", " is_leap_year = True\n", "else:\n", " is_leap_year = False\n", "\n", "s_ly = 'is a' if is_leap_year else 'is not a'\n", "print('{:4d} {:s} leap year'.format(year, s_ly))" ] }, { "cell_type": "code", "execution_count": 21, "id": "4826a3c3-19cb-4c01-be8e-15db9ad8a9db", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n", "False\n", "True\n", "True\n" ] } ], "source": [ "# Consider the following (incorrect) tests to see if string s has one of two values. \n", "\n", "s = 'eggs'\n", "print(s == ('eggs' or 'ham'))\n", "# True\n", "\n", "print(s == ('ham' or 'eggs'))\n", "#False\n", "\n", "# This is not the correct way to test if the string s is equal to either 'ham' or \n", "# 'eggs'. The expression ('eggs' or 'ham') is a boolean one in which both arguments, \n", "# being non-empty strings, evaluate to True. The expression short-circuits at the \n", "# first True equivalent and this operand is returned: that is, ('eggs' or 'ham') \n", "# returns 'eggs'. Since, s is, indeed, the string 'eggs' the equality comparison \n", "# returns True. However, if the order of the operands is swapped, the boolean or \n", "# again short-circuits at the first True-equivalent, which is now 'ham' and returns \n", "# it. The equality comparison with s fails, and the result is False.\n", "\n", "# There are two correct ways to test if s is one of two or more strings:\n", "\n", "s = 'eggs'\n", "print(s == 'ham' or s == 'eggs')\n", "# True\n", "print(s in ('ham', 'eggs'))\n", "# True" ] }, { "cell_type": "code", "execution_count": 11, "id": "a058a86d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ ">1 [1, 1, 2, 3, 5, 8]\n", ">2 [1, 1, 2, 3, 5, 8, 21, 34, 55]\n", ">3 [1, 1, 2, 3, 5, 8, 21, 34, 55, 89, 144]\n", ">4 [2, 3]\n", ">5 [1, 2, 5, 21, 55, 144]\n", ">6 [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]\n", ">7 [1, 2, 3, 4]\n", ">8 [1, 2, 3, 4, [...]]\n", ">9 2 [1, 2, 3, 4, [...]]\n", ">10 1\n" ] } ], "source": [ "# lists\n", "\n", "fib = [1, 1, 2, 3, 5, 8]\n", "print('>1',fib)\n", "fib.extend([21,34,55])\n", "print('>2',fib)\n", "fib += [89, 144]\n", "print('>3',fib)\n", "print('>4',fib[2:4])\n", "print('>5',fib[::2])\n", "x=[1,2,3]\n", "print('>6',x*6) # doesn't mulitple each element by 6\n", "x.append(4)\n", "print('>7',x)\n", "x.append(x) # infinite recursion\n", "print('>8',x)\n", "print('>9',x[1],x[4])\n", "print('>10',x[0])" ] }, { "cell_type": "code", "execution_count": 23, "id": "45a5d49b-8f7f-46f2-9eac-fe85f77ca077", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 2, 4, 5, 5]" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Given an ordered list of test scores, produce a list associating each score with a rank \n", "# (starting with 1 for the highest score). Equal scores should have the same rank. For \n", "# example, the input list [87, 75, 75, 50, 32, 32] should produce the list of rankings [1,2,2,4,5,5].\n", "\n", "scores = [87, 75, 75, 50, 32, 32]\n", "ranks = []\n", "for score in scores:\n", " ranks.append(scores.index(score) + 1)\n", "\n", "ranks" ] }, { "cell_type": "code", "execution_count": 25, "id": "55d6eb6b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]\n", "[(1, 2, 3, 4), ('a', 'b', 'c', 'd')]\n", "[1, 0, 3]\n", "[1, 0, 9, 25, 36, 81]\n", "[True, True, True, False, False, False]\n" ] } ], "source": [ "# zip, filter and map\n", "\n", "x=[1,2,3,4]\n", "y=['a','b','c','d']\n", "z=list(zip(x,y))\n", "print(z)\n", "\n", "# note: zip(*z) reverses the process\n", "print(list(zip(*z)))\n", "\n", "def less_than_5(x):\n", " return x < 5\n", "u = [1, 0, 3, 5, 6, 9]\n", "print(list(filter(less_than_5,u)))\n", "\n", "def square(x):\n", " \"\"\"a function that returns the square value\"\"\"\n", " return x**2\n", "print(list(map(square, u)))\n", "print(list(map(less_than_5,u)))\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 13, "id": "54d4e363", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'pi': 3.14159, 'e': 2.718, 'h': 6.62606957e-34, True: 1.0}\n", "2.718\n", "z\n" ] } ], "source": [ "# dictionaries\n", "\n", "constants = {\n", "'pi': 3.14159,\n", "\"e\": 2.718,\n", "\"h\": 6.62606957e-34,\n", "True: 1.0,\n", "}\n", "print(constants)\n", "print(constants['e'])\n", "\n", "# from a list\n", "axes = dict([[1, \"x\"], [2, \"y\"], [3, \"z\"]])\n", "print(axes[3])\n" ] }, { "cell_type": "code", "execution_count": 14, "id": "9e743dbe", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2, 3, 1]\n", "[0 1 2 3 4 5 6 7 8 9]\n" ] }, { "data": { "text/plain": [ "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# simple arrays\n", "\n", "x=[1,3,2]\n", "x.reverse()\n", "print(x)\n", "a=np.arange(10)\n", "print(a)\n", "a" ] }, { "cell_type": "code", "execution_count": 15, "id": "370bf0fc", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "t-minus 3\n", "blastoff!\n", "t-minus 2\n", "blastoff!\n", "t-minus 1\n", "blastoff!\n", "\n", ">fib [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]\n", "\n", "S\n", "c\n", "h\n", "o\n", "m\n", "b\n", "e\n", "r\n", "t\n", "S c h o m b e r t \n", "Schombert\n" ] } ], "source": [ "# loops\n", "\n", "t = 3\n", "while 0 < t:\n", " print(\"t-minus \" + str(t))\n", " t = t - 1\n", " print(\"blastoff!\")\n", "\n", "fib = [1, 1]\n", "while True:\n", " x = fib[-2] + fib[-1]\n", " if x%12 == 0:\n", " break\n", " fib.append(x)\n", "print('\\n>fib',fib,end='\\n\\n')\n", "\n", "for letter in \"Schombert\":\n", " print(letter)\n", "for letter in \"Schombert\":\n", " print(letter,end=' ')\n", "print()\n", "for letter in \"Schombert\":\n", " print(letter,end='')\n", "print()" ] }, { "cell_type": "code", "execution_count": 16, "id": "7d53f1a4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Keys:\n", "first\n", "last\n", "birthday\n", "\n", "======\n", "\n", "Values:\n", "Albert\n", "Einstein\n", "[1879, 3, 14]\n", "\n", "======\n", "\n", "Items:\n", "first Albert\n", "last Einstein\n", "birthday [1879, 3, 14]\n" ] } ], "source": [ "# dictonary and loop\n", "\n", "d = {\"first\": \"Albert\",\n", " \"last\": \"Einstein\",\n", " \"birthday\": [1879, 3, 14]}\n", "print(\"\\nKeys:\")\n", "for key in d.keys():\n", " print(key)\n", "print(\"\\n======\\n\")\n", "print(\"Values:\")\n", "for value in d.values():\n", " print(value)\n", "print(\"\\n======\\n\")\n", "print(\"Items:\")\n", "for key, value in d.items():\n", " print(key, value)" ] }, { "cell_type": "code", "execution_count": 17, "id": "994e2a90", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['UP', 'DOWN', 'TOP', 'BOTTOM', 'CHARM', 'STRANGE']\n", "{0: -0.4756316152532728, 1: -0.561420391777627, 2: -1.6180398021151097, 3: 0.7321173639242107, 4: -0.30510704310773107, 5: -0.11506246345332422, 6: -0.5874518513433585}\n" ] } ], "source": [ "# comprehensions\n", "\n", "quarks = ['up', 'down', 'top', 'bottom', 'charm', 'strange']\n", "upper_quarks = [quark.upper() for quark in quarks]\n", "print(upper_quarks)\n", "\n", "# and dictionaries\n", "\n", "data = {i : np.random.randn() for i in range(7)}\n", "print(data)" ] }, { "cell_type": "code", "execution_count": 18, "id": "033b6943", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]\n", "2\n", "Blast off!\n" ] } ], "source": [ "# lambdas\n", "\n", "f = lambda: [x**2 for x in range(10)]\n", "print(f())\n", "\n", "# function\n", "\n", "def countdown():\n", " yield 3\n", " yield 2\n", " yield 1\n", " yield 'Blast off!'\n", "\n", "# generator\n", "\n", "g = countdown()\n", "next(g)\n", "x = next(g)\n", "print(x)\n", "y, z = next(g), next(g)\n", "print(z)\n" ] }, { "cell_type": "code", "execution_count": 26, "id": "4935fd90-453a-44be-a86c-1239913bb19f", "metadata": {}, "outputs": [], "source": [ "# try, else, except, finally\n", "\n", "def process_file(filename):\n", " try:\n", " fi = open(filename, 'r')\n", " except IOError:\n", " print('Oops: couldn\\'t open {} for reading'.format(filename))\n", " return\n", " else:\n", " lines = fi.readlines()\n", " print('{} has {} lines.'.format(filename, len(lines)))\n", " fi.close()\n", " finally:\n", " print(' Done with file {}'.format(filename))\n", "\n", " print('The first line of {} is:\\n{}'.format(filename, lines[0]))\n", " # further processing of the lines ... \n", " return" ] } ], "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.11.2" } }, "nbformat": 4, "nbformat_minor": 5 }