{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hello world!2\n" ] } ], "source": [ "\"\"\"Questo è il mio primo notebook jupyter, lanciato da anaconda su linux.\n", "Premere CTRL-INVIO per rielaborare una cella\n", "\n", "python 3.x si riconosce perchè print è una funzione con gli argomenti tra parentesi\n", "\"\"\"\n", "# vedere https://www.w3schools.com/python/default.asp\n", "#\n", "print(\"hello world!2\")" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "caratteri speciali % \\ $ \\n va a capo \\t fa il[\t]tab\n", "apice singolo: ['] virgolette [\"]\n", "%d=interi %g=generic number %f=float %s=stringa\n", "intero:[1] generico:[-22.5] float:[3.000000] fload2dec[-3.14]: string:[ciao]\n", "k25\n" ] } ], "source": [ "print('caratteri speciali % \\ $ \\\\n va a capo \\\\t fa il[\\t]tab')\n", "print(\"apice singolo: ['] virgolette [\\\"]\")\n", "print(\"%d=interi %g=generic number %f=float %s=stringa\")\n", "print(\"intero:[%d] generico:[%g] float:[%f] fload2dec[%.2f]: string:[%s]\" % (1, -22.5, 3.0, -3.14159, \"ciao\"))\n", "\n", "a = 25\n", "key = \"k%d\" % a\n", "print(key)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5\n", "i=5\n" ] } ], "source": [ "i=5\n", "print(i)\n", "print(\"i=%g\" % i)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "seeds= ['cani', 'gatti', 'fiori']\n", "object= <itertools.permutations object at 0x0000019EEF2A57C8>\n", "ordini= [('cani', 'gatti', 'fiori'), ('cani', 'fiori', 'gatti'), ('gatti', 'cani', 'fiori'), ('gatti', 'fiori', 'cani'), ('fiori', 'cani', 'gatti'), ('fiori', 'gatti', 'cani')]\n", "\n", "len(seeds)=3\n", "len(ordini)= 6\n" ] } ], "source": [ "\"\"\"\n", "per maggiori info sugli iterators e su yield vedere\n", "https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do/231855#231855\n", "\"\"\"\n", "\n", "import itertools\n", "seeds = [\"cani\", \"gatti\", \"fiori\"] # lista\n", "object = itertools.permutations(seeds) #restituisce una lista di tuple\n", "ordini = list(object)\n", "print(\"seeds=\",seeds)\n", "print(\"object=\",object)\n", "print(\"ordini=\",ordini)\n", "print()\n", "print(\"len(seeds)=%g\" % len(seeds))\n", "print(\"len(ordini)=\",len(ordini))\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "s2: [13-11-1966]\n" ] } ], "source": [ "# regular expressions\n", "#\n", "import re\n", "s = \"13-11g-1966\"\n", "p1 = re.compile('\\s') # whitespace matcher (space, tab, cr, lf, etc)\n", "s1 = p1.sub('',s) # replace whitespace with nothing (remove whitespace)\n", "p2 = re.compile('[^0-9\\-]') \n", "s2 = p2.sub('',s1) # remove everything except digits and \"-\"\n", "print(\"s2: [%s]\" % s2)\n" ] }, { "cell_type": "code", "execution_count": 421, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "s2: [12-11-1980]\n", "received: [12-11-1980] d=[12] m=[11] y=[1980]\n", "1980-11-12\n", "s2: [29-13-1981]\n", "received: [ 29-13 -1981] d=[29] m=[13] y=[1981]\n", "dmy2ymd: month parsing error: setting month to 1\n", "1981-01-29\n", "s2: [32-11-84]\n", "received: [ 32-11 -84] d=[32] m=[11] y=[84]\n", "dmy2ymd: day parsing error: setting day to 1\n", "1984-11-01\n", "s2: [32-11-2014]\n", "received: [ 32-11 g -2014] d=[32] m=[11] y=[2014]\n", "dmy2ymd: day parsing error: setting day to 1\n", "2014-11-01\n" ] } ], "source": [ "# regular expressions, strings and date parsing\n", "#\n", "import re #regular expressions see https://docs.python.org/3/howto/regex.html\n", "\n", "def dmy2ymd(s):\n", " # transforms \" 21-8-80 \" in \"1980-08-21\"\n", " p2 = re.compile('[^0-9\\-]') \n", " s2 = p2.sub('',s) # remove everything except digits and \"-\"\n", " print(\"s2: [%s]\" % s2)\n", " s2l = re.split('[\\-]',s2) # create a list splitting on \"-\" (put in [] the chars you want to split on escaping with \\ if needed)\n", " d = int(s2l[0]) # as numbers\n", " m = int(s2l[1])\n", " y = int(s2l[2])\n", " print(\"received: [%s] d=[%g] m=[%g] y=[%g]\" %(s,d,m,y))\n", " if not d in range(1,31):\n", " print(\"dmy2ymd: day parsing error: setting day to 1\")\n", " d = 1\n", " if not m in range(1,12):\n", " print(\"dmy2ymd: month parsing error: setting month to 1\")\n", " m = 1\n", " if y in range(0,99):\n", " y += 1900\n", " if not y in range(1900,2050):\n", " print(\"dmy2ymd: year parsing error: setting year to 2000\")\n", " y = 2000\n", " # si potrebbero fare i controlli sul numero dei giorni dei vari mesi e sui bisestili \n", " dd = str(d)\n", " if len(dd) == 1: dd = \"0\" + dd\n", " mm = str(m)\n", " if len(mm) == 1: mm = \"0\" + mm\n", " yyyy = str(y)\n", " out = yyyy + \"-\" + mm + \"-\" + dd\n", " return out\n", "\n", "print(dmy2ymd(\"12-11-1980\"))\n", "print(dmy2ymd(\" 29-13 -1981\"))\n", "print(dmy2ymd(\" 32-11 -84\"))\n", "print(dmy2ymd(\" 32-11 g -2014\"))" ] }, { "cell_type": "code", "execution_count": 393, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[('Marco', 'Guardigli', '13-11-1966', 12), ('Klaudija', 'Stefan', '14-01-1975', 21), ('Roberto', 'Guardigli', '03-01-1969', 17), ('Zorro', 'Zeta', '01-01-1980', 8), ('Zenda', 'Zeta', '02-01-1981', 12)]\n", "[(0, 'Marco', 'Guardigli', '13-11-1966', 12), (1, 'Klaudija', 'Stefan', '14-01-1975', 21), (2, 'Roberto', 'Guardigli', '03-01-1969', 17), (3, 'Zorro', 'Zeta', '01-01-1980', 8), (4, 'Zenda', 'Zeta', '02-01-1981', 12)]\n", "[(0, 'Marco', 'Guardigli', '13-11-1966', 12), (2, 'Roberto', 'Guardigli', '03-01-1969', 17), (1, 'Klaudija', 'Stefan', '14-01-1975', 21), (4, 'Zenda', 'Zeta', '02-01-1981', 12), (3, 'Zorro', 'Zeta', '01-01-1980', 8)]\n", "[(3, 'Zorro', 'Zeta', '01-01-1980', 8), (4, 'Zenda', 'Zeta', '02-01-1981', 12), (1, 'Klaudija', 'Stefan', '14-01-1975', 21), (2, 'Roberto', 'Guardigli', '03-01-1969', 17), (0, 'Marco', 'Guardigli', '13-11-1966', 12)]\n" ] } ], "source": [ "# liste di tuple\n", "# see https://docs.python.org/3/tutorial/datastructures.html?highlight=tuples#tuples-and-sequences\n", "#\n", "import operator # required for sorting using itemgetter\n", "\n", "db0 = [ # name, surname, birthdate gg-mm-yyyy, score\n", " (\"Marco\",\"Guardigli\",\"13-11-1966\",12),\n", " (\"Roberto\",\"Guardigli\",\"03-01-1969\",17),\n", " (\"Zorro\",\"Zeta\",\"01-01-1980\",8),\n", " (\"Zenda\",\"Zeta\",\"02-01-1981\",12)\n", " ]\n", "db0.insert(1,(\"Klaudija\",\"Stefan\",\"14-01-1972\",21)) # insert a new tuple in the list before the specified element (zero based)\n", "\n", "print(db0)\n", "db1 = [] # empty list\n", "id = 0 # unique id will mark each tuple in the new list db1\n", "for k in db0:\n", " # id, name, surname, birthdate gg-mm-yyyy, score\n", " k1 = ((id , k[0], k[1], k[2], k[3]))\n", " db1.append((k1)) # adds the new tuple at the end of the new list\n", " id += 1\n", "print(db1) \n", "\n", "# now will sort the list in reverse surname,name,score order, with in-place-sort, using operator itemgetter\n", "db1.sort(key=operator.itemgetter(2,1,4))\n", "# db1.sort(key = lambda tup:tup[2] , reverse=True) # this fails with identical sort keys\n", "print(db1)\n", "\n", "# reverse sorting in a new list, without operator.itemgetter, using lambda sort function with multiple keys\n", "db2 = sorted(db1, key = lambda x: (x[2] , x[1] , x[4]), reverse=True)\n", "print(db2)\n" ] }, { "cell_type": "code", "execution_count": 271, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3, 4, 5]\n", "['a', 'e', 'i', 'o', 'u']\n", "1 e\n", "2 i\n", "3 o\n", "['e', 'i', 'o']\n", "1 a\n", "2 e\n", "3 i\n", "4 o\n", "5 u\n" ] } ], "source": [ "# ranges & zip & list cast\n", "nums = [x for x in range(1,6)] # range va da zero o primo valore all'(ultimo -1)\n", "vowels = [v for v in \"aeiou\"]\n", "mapping = dict(zip(nums,vowels)) # crea un array associativo con coppie chiave-valore prese da nums e vowels\n", "r = range(1,4)\n", "\n", "print(nums)\n", "print(vowels)\n", "\n", "for k in r: print(k,vowels[k])\n", "\n", "print(list(vowels[j] for j in r))\n", "\n", "for i in mapping:\n", " print(i, mapping[i])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# file io\n", "#\n", "#!/usr/bin/python3\n", "#\n", "cflist = []\n", "\n", "myfile = open(\"cflist.txt\",\"r\")\n", "lines = 0\n", "for line in myfile:\n", " #cflist.append(line[:-1]) # strips LF\n", " cflist.append(line.rstrip()) # strips CR/LF, or similar ** FAR BETTER **\n", " lines += 1\n", "myfile.close()\n", "print(\"read \", lines, \"lines\")\n", "\n", "\n", "i = 0\n", "for c in cflist:\n", " print(\"cflist[%g]=[%s]\" % (i,c))\n", " i += 1\n", "\n" ] }, { "cell_type": "code", "execution_count": 343, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "<class 'bytes'>\n", "12259\n", "\n", "b'<!doctype html><html itemscope=\"\" itemtype=\"http://schema.org/WebPage\" lang=\"hr\"><head><meta content'\n", "\n", "frequenze dei vari simboli:\n", "[k60]: 145\n", "[k33]: 25\n", "[k100]: 293\n", "[k111]: 538\n", "[k99]: 312\n", "[k116]: 538\n", "[k121]: 73\n", "[k112]: 254\n", "[k101]: 606\n", "[k32]: 297\n", "[k104]: 218\n", "[k109]: 167\n", "[k108]: 414\n", "[k62]: 144\n", "[k105]: 460\n", "[k115]: 352\n", "[k61]: 310\n", "[k34]: 320\n", "[k58]: 171\n", "[k47]: 175\n", "[k97]: 461\n", "[k46]: 254\n", "[k114]: 352\n", "[k103]: 369\n", "[k87]: 13\n", "[k98]: 200\n", "[k80]: 23\n", "[k110]: 396\n", "[k120]: 188\n", "[k59]: 171\n", "[k85]: 5\n", "[k84]: 21\n", "[k70]: 18\n", "[k45]: 65\n", "[k56]: 108\n", "[k113]: 27\n", "[k117]: 182\n", "[k118]: 108\n", "[k67]: 33\n", "[k49]: 217\n", "[k95]: 30\n", "[k50]: 383\n", "[k71]: 13\n", "[k83]: 21\n", "[k82]: 13\n", "[k86]: 16\n", "[k88]: 22\n", "[k77]: 23\n", "[k119]: 101\n", "[k40]: 137\n", "[k102]: 169\n", "[k41]: 137\n", "[k123]: 99\n", "[k107]: 37\n", "[k69]: 28\n", "[k73]: 22\n", "[k39]: 36\n", "[k51]: 158\n", "[k48]: 136\n", "[k74]: 7\n", "[k66]: 11\n", "[k81]: 7\n", "[k44]: 427\n", "[k54]: 89\n", "[k53]: 112\n", "[k55]: 109\n", "[k57]: 105\n", "[k52]: 118\n", "[k76]: 19\n", "[k72]: 17\n", "[k106]: 36\n", "[k125]: 99\n", "[k91]: 16\n", "[k93]: 16\n", "[k38]: 102\n", "[k65]: 18\n", "[k124]: 26\n", "[k78]: 8\n", "[k68]: 7\n", "[k43]: 25\n", "[k63]: 18\n", "[k122]: 17\n", "[k94]: 4\n", "[k79]: 15\n", "[k35]: 49\n", "[k42]: 1\n", "[k37]: 6\n", "[k64]: 1\n", "[k10]: 7\n", "[k75]: 5\n", "[k89]: 3\n", "[k92]: 121\n", "[k90]: 1\n" ] } ], "source": [ "# http read\n", "# character frequency analysis\n", "#\n", "import urllib.request\n", "import sys # per getsizeof\n", "\n", "contents = urllib.request.urlopen(\"https://www.google.com/\").read()\n", "print(type(contents))\n", "print(sys.getsizeof(contents))\n", "print()\n", "print(contents[0:100]) # visualizza i primi 100 bytes\n", "print()\n", "\n", "# ora costruiamo un diagramma delle frequenze dei vari simboli letti\n", "print(\"frequenze dei vari simboli:\")\n", "freq = {} # uso array associativo (key,item) per calcolare le frequenze dei vari simboli\n", "for i in contents:\n", " k = \"k%s\" % i # \"k65\" e' la chiave il cui valore è la frequenza di \"A\" il cui byte è 65 \n", " if k in freq: freq[k] += 1 \n", " else: freq[k] = 1\n", "for k in freq:\n", " print(\"[%s]: %g\" % (k, freq[k]))\n", "#print(freq)\n", " \n" ] }, { "cell_type": "code", "execution_count": 345, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "b'<!doctype html><html itemscope=\"\" itemtype=\"http://schema.org/WebPage\" lang=\"hr\"><head><meta content'\n", "\n", "frequenze dei vari simboli:\n" ] }, { "ename": "TypeError", "evalue": "list indices must be integers or slices, not str", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m<ipython-input-345-606587aa3d64>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mk\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"k%s\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0mi\u001b[0m \u001b[0;31m# \"k65\" e' la chiave il cui valore è la frequenza di \"A\" il cui byte è 65\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mk\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mfreq\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mfreq\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mfreq\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mk\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mfreq\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"[%s]: %g\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mTypeError\u001b[0m: list indices must be integers or slices, not str" ] } ], "source": [ "# http read\n", "\n", "import urllib.request\n", "import sys\n", "import operator\n", "# from operator import itemgetter, attrgetter #per il sorting\n", "\n", "contents = urllib.request.urlopen(\"https://www.google.com/\").read()\n", "print(contents[0:100]) # visualizza i primi 100 bytes\n", "print()\n", "\n", "# ora costruiamo un diagramma delle frequenze dei vari simboli letti\n", "print(\"frequenze dei vari simboli:\")\n", "freq = [] # uso un array di tuple in cui il primo elemento è il codice carattere e il secondo è la frequenza\n", "for i in contents:\n", " k = \"k%s\" % i # \"k65\" e' la chiave il cui valore è la frequenza di \"A\" il cui byte è 65\n", " if k in freq: freq[k] += 1\n", " else: freq[k] = 1\n", "for k in freq:\n", " print(\"[%s]: %g\" % (k[0], k[1]))\n", "\n", " #print(freq)\n", "# ordiniamo per frequenza decrescente. la funzione sorted() produce una lista ordinata a partire da un iterabile\n", "#sorted_keys = sorted(freq) #ordina per valori crescenti di key\n", "#sorted_keys_rev = sorted(freq, reverse=True) #ordina per valori decrescenti di key\n", "#sorted_keys_byitem = sorted(freq, key=lambda : valore\n", "\n", " \n", " \n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# iterators & generators\n", "# see https://anandology.com/python-practice-book/iterators.html#\n", "#\n", "\n" ] }, { "cell_type": "code", "execution_count": 231, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "before nplus1(a): 3 0\n", " nplus1 id(x) 94165510898528\n", "after nplus1(a): 3 4\n", "before nplus2(a): 3 0\n", " nplus2 id(x) 94165510898528\n", "after nplus2(a): 3 4\n", "before lplus1(a): ['uno', 'due'] 140381080777344 []\n", " lplus1 id(x) 140381080777344\n", "after lplus1(a): ['uno', 'due'] 140381080777344 ['uno', 'due', 'extra']\n", "before lplus2(a): ['uno', 'due'] 140381077958080 []\n", " lplus2 id(x) 140381077958080\n", "after lplus2(a): ['uno', 'due', 'extra'] 140381077958080 ['uno', 'due', 'extra']\n" ] } ], "source": [ "# passaggio parametri\n", "# python talvolta passa per valore e talvolta per reference, a seconda del tipo e le conseguenze degli operatori\n", "# possono essere poco prevedibili\n", "\n", "def nplus1(x):\n", " print(\" nplus1 id(x)\", id(x))\n", " x = x + 1 # this x is always a local copy\n", " return x\n", "def nplus2(x):\n", " print(\" nplus2 id(x)\", id(x))\n", " x += 1 # this x is always a local copy\n", " return x\n", "\n", "def lplus1(x):\n", " print(\" lplus1 id(x)\", id(x))\n", " x = x + [\"extra\"] # this alters a local copy of the list object\n", " return x\n", "def lplus2(x):\n", " print(\" lplus2 id(x)\", id(x))\n", " x += [\"extra\"] # the in place operator += alters the passed list object (uses its pointer)\n", " return x\n", "\n", "\n", "a = 3\n", "b = 0\n", "print(\"before nplus1(a):\",a,b)\n", "b = nplus1(a)\n", "print(\"after nplus1(a):\",a,b)\n", "\n", "a = 3\n", "b = 0\n", "print(\"before nplus2(a):\",a,b)\n", "b = nplus2(a)\n", "print(\"after nplus2(a):\",a,b)\n", "\n", "a = [\"uno\",\"due\"]\n", "b = []\n", "print(\"before lplus1(a):\", a , id(a) , b)\n", "b = lplus1(a)\n", "print(\"after lplus1(a):\", a , id(a) , b)\n", "\n", "a = [\"uno\",\"due\"]\n", "b = []\n", "print(\"before lplus2(a):\", a , id(a) , b)\n", "b = lplus2(a)\n", "print(\"after lplus2(a):\", a , id(a) , b)\n", "\n", "# see https://www.python-course.eu/python3_passing_arguments.php\n" ] }, { "cell_type": "code", "execution_count": 130, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Elapsed (secs): 39.04\n", "seeds= abcdefghijk\n", "size= 39916800\n", "\n", "len(seeds)=11\n", "len(ordini)= 39916800\n" ] } ], "source": [ "import timeit #misurazione tempi\n", "# quando si importa una libreria, si può in generale vederne l'help eseguendo help(nomelib)\n", "import itertools\n", "import math\n", "seeds = \"abcdefghijk\"\n", "\"\"\"\n", "con 10 caratteri, senza stampare, ci mette circa 3.2 sec a calcolare 3.6 Milioni di permutazioni\n", "con 11 caratteri, senza stampare, ci mette circa 39 sec a calcolare circa 40 milioni di permutazioni\n", "\n", "\"\"\"\n", "size = math.factorial(len(seeds))\n", "ordini = [] #array di risultati\n", "\n", "time_start = timeit.default_timer() # prende tempo 1\n", "for s in itertools.permutations(seeds):\n", " o = \"\"\n", " for i in s:\n", " o = o + i #concatenazione di stringhe\n", " ordini.append(o)\n", "time_end = timeit.default_timer() # prende tempo 2\n", "print(\"Elapsed (secs): %.2f\" % (time_end - time_start)) #mostra tempo trascorso\n", "print(\"seeds=\",seeds)\n", "print(\"size=\",size)\n", "#print(\"ordini=\",ordini)\n", "print()\n", "print(\"len(seeds)=%g\" % len(seeds))\n", "print(\"len(ordini)=\",len(ordini))\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "the value of i is 5\n", "the second and third args follow: 2,{tre}\n" ] } ], "source": [ "\"\"\"\n", "stringa.format(args) produce la sostituzione dei parametri tra graffe con i suoi argomenti\n", "Per rappresentare una parentesi graffa se ne mettono due di fila\n", "\"\"\"\n", "i=5\n", "s1 = \"the value of i is {0}\\nthe second and third args follow: {1},{{{2}}}\"\n", "s2 = s1.format(i,2,\"tre\")\n", "print(s2)\n" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "i is 6\n" ] } ], "source": [ "i=6\n", "if i == 5:\n", " print(\" i is 5\")\n", " \n", "if i==6:\n", " print(\"i is 6\")" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "6\n" ] } ], "source": [ "def mult(x,y):\n", " return x*y\n", "\n", "print(mult(2,3))" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Marco is not great\n", "Klaudija is great\n", "Loti is great\n" ] } ], "source": [ "from random import random\n", "\n", "def tellme(s):\n", " answer = \"\"\n", " # random() gives back a floating number between 0 and 1\n", " if random() > 0.3:\n", " answer = \" is great\"\n", " else:\n", " answer = \" is not great\"\n", " return s + answer\n", "\n", "\n", "mylist = (\"Marco\", \"Klaudija\", \"Loti\")\n", "\n", "for me in (mylist):\n", " print(tellme(me))\n", " \n" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 @----@@@@--@-@-@@@---@@----@--@@-@@-@@@@@--@-----@---@@@-@--\n", "1 @@@@@@-@-@--@@-@-@@------@@-@--@----@@-@--@@--@---@@-@-@-@--\n", "2 @@@@@@-----@--@-@-@---@@@@@@-@@-@@@-@@@-@-----@---@@@@@---@@\n", "3 --@-@---@@@---@-@@@----@----@-@-----@-@---@@@@@@@-@--@-@@@-@\n", "4 @---@@---@-@--@@-@---@@-@-@@--@@-@-@--@----@-@@@@-@@@------@\n", "5 @---@@@-@----@@---@@----@@--@----@@--@--@-@@-@----@@-@@---@@\n", "6 @@@@-@-@--@-@-@-@-@@-@@@@@@-@@@@@----@@@@@@--@-@---@@--@--@@\n", "7 ---@@-@@@-@@--@@@-----@-@@--@@---@--@-@-@@@@-@--@@@--@@-@--@\n", "8 -----@---@---@@--@-----@@--@@@---------@-@@--@-@--@@-@-@-@@-\n", "9 --@@@----@@@@@-@-@-@-@--@@---@---@--@--@@@-@@@@@-@@@@@----@-\n" ] } ], "source": [ "# experiment with randomness\n", "from random import random\n", "\n", "linelength = 60\n", "\n", "for j in range(0,10):\n", " i = 0\n", " myline = \"\"\n", " while i < linelength:\n", " if random() > 0.5:\n", " sym = \"@\"\n", " else:\n", " sym = \"-\"\n", " myline += sym \n", " i += 1\n", " print(j,myline)\n", "\n" ] }, { "cell_type": "code", "execution_count": 346, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "fact(1)=1\n", "fact(2)=2\n", "fact(3)=6\n", "fact(4)=24\n", "fact(5)=120\n", "fact(6)=720\n", "fact(7)=5040\n", "fact(8)=40320\n", "fact(9)=362880\n", "fact(10)=3628800\n" ] } ], "source": [ "# funzione fattoriale ricorsiva\n", "def fact(x):\n", " if x == 1: return 1\n", " else: return x * fact(x-1)\n", " \n", "for a in range(1,11): #range parte da 0 se non si specifica il primo argomento, e si ferma al valore indicato -1\n", " print(\"fact(%d)=%d\" % (a,fact(a)))" ] }, { "cell_type": "code", "execution_count": 347, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "fibo(1)=1\n", "fibo(2)=1\n", "fibo(3)=2\n", "fibo(4)=3\n", "fibo(5)=5\n", "fibo(6)=8\n", "fibo(7)=13\n", "fibo(8)=21\n", "fibo(9)=34\n", "fibo(10)=55\n", "fibo(11)=89\n", "fibo(12)=144\n", "fibo(13)=233\n", "fibo(14)=377\n", "fibo(15)=610\n", "fibo(16)=987\n", "fibo(17)=1597\n", "fibo(18)=2584\n", "fibo(19)=4181\n", "fibo(20)=6765\n", "fibo(21)=10946\n", "fibo(22)=17711\n", "fibo(23)=28657\n", "fibo(24)=46368\n", "fibo(25)=75025\n", "fibo(26)=121393\n", "fibo(27)=196418\n", "fibo(28)=317811\n", "fibo(29)=514229\n", "fibo(30)=832040\n", "fibo(31)=1.34627e+06\n", "fibo(32)=2.17831e+06\n", "fibo(33)=3.52458e+06\n", "fibo(34)=5.70289e+06\n", "fibo(35)=9.22746e+06\n", "fibo(36)=1.49304e+07\n", "fibo(37)=2.41578e+07\n", "fibo(38)=3.90882e+07\n", "fibo(39)=6.3246e+07\n", "fibo(40)=1.02334e+08\n", "fibo(41)=1.6558e+08\n" ] }, { "ename": "KeyboardInterrupt", "evalue": "", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"fibo(%g)=%g\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m<ipython-input-347-72e1207ca65a>\u001b[0m in \u001b[0;36mfibo\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mfibo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ], "source": [ "# funzione fibonacci ricorsiva\n", "def fibo(x):\n", " if x == 0: return 0\n", " if x == 1: return 1\n", " else: return (fibo(x-2) + fibo(x-1))\n", "\n", "for a in range(1,100):\n", " print(\"fibo(%g)=%g\" % (a, fibo(a)))\n", " " ] }, { "cell_type": "code", "execution_count": 221, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5 -1 6 0.6666666666666666\n", "2 2 125\n", "x=2\n", "x=8\n", "x=2\n", "x=8\n", "x=4\n", "x=1\n", "-=-\n", "x=5\n", "x=6\n", "x=12\n", "\n", "logical\n", "False\n", "True\n", "True\n", "2\n", "3\n", "0\n", "-3\n", "4096\n", "253\n" ] } ], "source": [ "\"\"\"Operatori\"\"\"\n", "print(2+3,2-3,2*3,2/3)\n", "print(5//2,8%3,5**3)\n", "x = 2\n", "print(\"x=%g\" % x)\n", "x += 6\n", "print(\"x=%g\" % x)\n", "x %= 3\n", "print(\"x=%g\" % x)\n", "x **= 3\n", "print(\"x=%g\" % x)\n", "x //= 2\n", "print(\"x=%g\" % x)\n", "x -= 3\n", "print(\"x=%g\" % x)\n", "print(\"-=-\")\n", "x = 5\n", "print(\"x=%g\" % x)\n", "x -=- 1 # sottrae da x -1 quindi incrementa x di 1 (un po' strano ma possibile e sintatticamente corretto)\n", "print(\"x=%g\" % x)\n", "x -=- x # statement \"simmetrico\" per raddoppiare x\n", "print(\"x=%g\" % x)\n", "print()\n", "print(\"logical\")\n", "print(not True)\n", "print(True or False)\n", "print( 1 != 2 )\n", "print( 1 and 2 ) \n", "print( 1 | 2 ) # bitwise or\n", "print( 1 & 2 ) # bitwise and\n", "print( ~2 ) # (cambio segno e aggiungo - 1 (bitwise))\n", "print( 1 << 12 ) # bitwise shift left\n", "print( 2 ^ 255 ) # bitwise xor\n", "\n", "# \n", "# vedere https://www.programiz.com/python-programming/operators\n", "#\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# per fare un block comment, selezionare più righe e premere CTRL + / (nel keypad a destra della tastiera)\n", "#\n", "# L'editor browser di jupyter consente di avere più cursori attivi in uno stesso momento\n", "# e di inserire simultaneamente in più punti quello che si scrive \n", "# questa funzione può essere utile per fare block comment in modo alternativo.\n", "# 1.andare a inizio riga\n", "# 2.premere alt sx e tenerlo premuto (il cursore diventa il mirino di selezione colonna)\n", "# 3.trascinare con il mouse e leftclick verso il basso e selezionare righe: il cursore si estende su più righe\n", "# 4.lasciare il task alt e premere il tasto # (alt dx + à su tastiera italiana)\n", "# 5.premere esc per uscire dalla modalità colonna\n", "#\n" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "inserire il nome:marco\n", "ciao [marco]\n" ] } ], "source": [ "# input da utente\n", "#\n", "n = input(\"inserire il nome:\")\n", "print(\"ciao [%s]\" % n)" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "inserisci un elemento per volta, invio per terminare\n", ":uno\n", ":due\n", ":007\n", ":tre\n", ":\n", "myl= ['uno', 'due', 'tre']\n" ] } ], "source": [ "# list input ed emulazione di ciclo do--while (cond)\n", "#\n", "myl = []\n", "print(\"inserisci un elemento per volta, invio per terminare\")\n", "while True:\n", " e = input(\":\")\n", " if e == \"\" : break \n", " if e == \"007\": continue # this secret code skips append\n", " myl.append(e)\n", "print(\"myl=\", myl)\n", " " ] }, { "cell_type": "code", "execution_count": 122, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['uno', 'due', 'tre']\n", "['uno', 'due', 'tre', ('quattro', 'cinque'), ('sei', 'sette'), ['otto', 'nove'], 'dieci', 'undici']\n", "uno\n", "due\n", "tre\n", "('quattro', 'cinque')\n", "('sei', 'sette')\n", "['otto', 'nove']\n", "dieci\n", "undici\n", "--\n", "uno\n", "due\n", "tre\n", "dieci\n", "undici\n", "--\n", "uno\n", "due\n", "tre\n", "quattro\n", "cinque\n", "sei\n", "sette\n", "otto\n", "nove\n", "dieci\n" ] } ], "source": [ "# list operators\n", "# append e extend\n", "myl = []\n", "for x in (\"uno\",\"due\",\"tre\"): # tra parentesi tonde è una tupla. le tuple sono immutabili\n", " myl.append(x)\n", "print(myl)\n", "ext1 = \"quattro\",\"cinque\" \n", "myl.append(ext1)\n", "ext2 = (\"sei\",\"sette\") # una tupla\n", "myl.append(ext2)\n", "ext3 = [\"otto\",\"nove\"] # una lista\n", "myl.append(ext3)\n", "ext4 = [\"dieci\", \"undici\"] \n", "myl.extend(ext4) # extend attacca una lista alla fine una lista\n", "\n", "print(myl)\n", "for e in myl:\n", " print(e)\n", " \n", "print(\"--\")\n", "\n", "myl.pop(3) # elimina un elemento e shifta i successivi\n", "myl.pop(3) # elimina un elemento\n", "myl.pop(3) # elimina un elemento\n", "for e in myl:\n", " print(e)\n", "\n", "print(\"--\")\n", "myl.remove(\"tre\") # rimuove la prima occorrenza e da errore se l'elemento non c'e'\n", "myl.insert(2,\"tre\") # inserisce e sposta in avanti i successivi\n", "for x in (\"sei\",\"cinque\",\"quattro\"):\n", " myl.insert(3,x)\n", "l=[\"sette\",\"otto\",\"nove\"]\n", "l.reverse()\n", "for x in l:\n", " myl.insert(6,x)\n", "\n", "myl.pop(len(myl)-1) # elimina ultimo elemento\n", "for e in myl:\n", " print(e)" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "2\n", "3\n", "!\n", "\"\n", "£\n", "$\n", "A\n", "B\n", "C\n", "D\n", "E\n" ] } ], "source": [ "# for loops with chars\n", "#\n", "for c in \"123!\\\"£$\":\n", " print(c)\n", "\n", "for i in range(65,70):\n", " print(chr(i))\n" ] }, { "cell_type": "code", "execution_count": 244, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "all ok\n", " uh oh!\n", "continuiamo\n" ] } ], "source": [ "# try statement\n", "# \n", "# try:\n", "# operation_that_can_throw_ioerror()\n", "# except IOError:\n", "# handle_the_exception_somehow()\n", "# else:\n", "# # we don't want to catch the IOError if it's raised\n", "# another_operation_that_can_throw_ioerror()\n", "# finally:\n", "# something_we_always_need_to_do()\n", "#\n", "print(\"all ok\")\n", "try:\n", " print(1/0)\n", "except TypeError:\n", " print(\" siamo nel pass\")\n", " pass\n", "except:\n", " print(\" uh oh!\")\n", " \n", " \n", "print(\"continuiamo\")" ] }, { "cell_type": "code", "execution_count": 252, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5\n", "-1\n", "6\n", "0.6666666666666666\n", "0\n" ] } ], "source": [ "# function indexing \n", "#\n", "\n", "def oper(f,x,y):\n", " def plus(x,y):\n", " return x+y\n", " def minus(x,y):\n", " return x-y\n", " def mul(x,y):\n", " return x*y\n", " def div(x,y):\n", " return x/y\n", " def otherwise(x,y):\n", " return 0\n", " switcher = { \"p\":plus, \"m\":minus, \"b\":mul, \"d\":div } # array associativo\n", " func = switcher.get(f,otherwise)\n", " return func(x,y)\n", "\n", "print(oper(\"p\",2,3))\n", "print(oper(\"m\",2,3))\n", "print(oper(\"b\",2,3))\n", "print(oper(\"d\",2,3))\n", "print(oper(\"x\",2,3))\n" ] }, { "cell_type": "code", "execution_count": 243, "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (<ipython-input-243-e2b17a337aca>, line 17)", "output_type": "error", "traceback": [ "\u001b[0;36m File \u001b[0;32m\"<ipython-input-243-e2b17a337aca>\"\u001b[0;36m, line \u001b[0;32m17\u001b[0m\n\u001b[0;31m print(add1(13))\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" ] } ], "source": [ "# function names\n", "#\n", "def plus1(x):\n", " x += 1\n", " return x\n", "\n", "add1 = plus1 # assegno nomi di funzioni\n", "print(\"add1\", type(add1), id(add1))\n", "print(\"plus1\", type(plus1), id(plus1))\n", "\n", "print(add1(3))\n", "\n", "del plus1\n", "\n", "try:\n", " print(\"plus1\", type(plus1), id(plus1))\n", "\n", "print(add1(13))\n" ] }, { "cell_type": "code", "execution_count": 177, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "inizio\n", " elapsed time: 0.0242\n", " test(100000)=539947911680\n", " now: [Sun Nov 17 09:16:50 2019] elapsed: 0.0244\n", "fine\n" ] } ], "source": [ "# uso di decorators (function wrappers)\n", "# see https://www.python-course.eu/python3_decorators.php\n", "# timing execution\n", "#\n", "\n", "import time\n", "\n", "def time_usage(func):\n", " def wrapper(*args, **kwargs): # *args means one or more arguments\n", " beg_ts = time.time()\n", " retval = func(*args, **kwargs)\n", " end_ts = time.time()\n", " print(\" elapsed time: %.4f\" % (end_ts - beg_ts))\n", " return retval\n", " return wrapper\n", "\n", "@time_usage\n", "def test(n):\n", " a = 0\n", " for i in range(0, n):\n", " a = a + 109*i - i^2 + i^3 \n", " return a\n", " \n", "print(\"inizio\")\n", "x = 100000\n", "s1 = time.time() # seconds since epoch (1.1.1970 00:00)\n", "print(\" test(%g)=%d\" % (x, test(x)))\n", "s2 = time.time()\n", "print(\" now: [%s] elapsed: %.4f\" % (time.ctime(s2), s2-s1))\n", "print(\"fine\")\n" ] }, { "cell_type": "code", "execution_count": 199, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "string is a <class 'str'>\n", "42 is a <class 'int'>\n", "2.71828 is a <class 'float'>\n", "(2+0.3j) is a <class 'complex'>\n", "['uno', 'due', 'tre'] is a <class 'list'>\n", "('primo', 'secondo') is a <class 'tuple'>\n", "range(0, 6) is a <class 'range'>\n", "{'name': 'Marco', 'age': 53} is a <class 'dict'>\n", "True is a <class 'bool'>\n", "122 is a <class 'int'>\n", "b'Hello World.' is a <class 'bytes'>\n", "<memory at 0x7fac5509cc80> is a <class 'memoryview'>\n", "t_str is a str type\n", "\n", "b'Hello World.'\n" ] } ], "source": [ "# python type\n", "# Text Type: \tstr\n", "# Numeric Types: \tint, float, complex\n", "# Sequence Types: \tlist, tuple, range\n", "# Mapping Type: \tdict\n", "# Set Types: \tset, frozenset\n", "# Boolean Type: \tbool\n", "# Binary Types: \tbytes, bytearray, memoryview\n", "# \n", "\n", "t_str = \"string\"\n", "t_int = 42\n", "t_float = 2.71828\n", "t_complex = 2+.3j\n", "t_list = [\"uno\",\"due\",\"tre\"]\n", "t_tuple = (\"primo\",\"secondo\")\n", "t_range = range(0,6) \n", "t_dict = dict(name=\"Marco\", age=53)\n", "t_bool = True\n", "t_bytes = 122\n", "t_bytearray = b\"Hello World.\"\n", "t_memoryview = memoryview(t_bytearray)\n", "\n", "if not t_memoryview.readonly:\n", " t_memoryview[-1] = '!'\n", "\n", "def print_type(x):\n", " print(x , \" is a \", type(x))\n", "\n", "mytuple = tuple((t_str, t_int, t_float, t_complex, t_list, t_tuple, t_range, t_dict, t_bool, t_bytes, t_bytearray, t_memoryview))\n", "\n", "for i in mytuple:\n", " print_type(i)\n", "\n", "if isinstance(t_str, str):\n", " print(\"t_str is a str type\")\n", " \n", "print()\n", "print(t_bytearray)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "ename": "ModuleNotFoundError", "evalue": "No module named 'cv2'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m<ipython-input-1-459b0b167499>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mmatplotlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpyplot\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mrandom\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mcv2\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpandas\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'cv2'" ] } ], "source": [ "import os\n", "from glob import glob\n", "import matplotlib.pyplot as plt\n", "import random\n", "import cv2\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.gridspec as gridspec\n", "import seaborn as sns\n", "import zlib\n", "import itertools\n", "import sklearn\n", "import itertools\n", "import scipy\n", "import skimage\n", "from skimage.transform import resize\n", "import csv\n", "from tqdm import tqdm\n", "from sklearn import model_selection\n", "from sklearn.model_selection import train_test_split, learning_curve,KFold,cross_val_score,StratifiedKFold\n", "from sklearn.utils import class_weight\n", "from sklearn.metrics import confusion_matrix\n", "import keras\n", "from keras.layers import Dense, Dropout, Activation, Flatten, Conv2D, MaxPooling2D, Lambda, MaxPool2D, BatchNormalization\n", "from keras.utils import np_utils\n", "from keras.utils.np_utils import to_categorical\n", "from keras.preprocessing.image import ImageDataGenerator\n", "from keras import models, layers, optimizers\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.metrics import confusion_matrix, accuracy_score\n", "from sklearn.utils import class_weight\n", "from keras.optimizers import SGD, RMSprop, Adam, Adagrad, Adadelta, RMSprop\n", "from keras.models import Sequential, model_from_json\n", "from keras.layers import Activation,Dense, Dropout, Flatten, Conv2D, MaxPool2D,MaxPooling2D,AveragePooling2D, BatchNormalization\n", "from keras.preprocessing.image import ImageDataGenerator\n", "from keras.callbacks import ReduceLROnPlateau, ModelCheckpoint\n", "from keras import backend as K\n", "from keras.applications.vgg16 import VGG16\n", "from keras.models import Model\n", "from keras.applications.inception_v3 import InceptionV3\n", "from imblearn.over_sampling import RandomOverSampler\n", "from imblearn.under_sampling import RandomUnderSampler\n", "#from keras.applications.mobilenet import MobileNet\n", "#from sklearn.metrics import roc_auc_score\n", "#from sklearn.metrics import roc_curve\n", "#from sklearn.metrics import auc\n", "%matplotlib inline\n", "\n", "import warnings\n", "warnings.filterwarnings(\"ignore\")\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }