CINXE.COM

PY4E - Python for Everybody

<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" > <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>PY4E - Python for Everybody</title> <script> var _TSUGI = { ajax_session: false, heartbeat: 1500000, heartbeat_url: "https://www.py4e.com/tsugi/util/heartbeat", rest_path: {"parent":"","base_url":"https:\/\/www.py4e.com","controller":"login","extra":"","action":false,"parameters":[],"current":"\/login","full":"\/login"}, spinnerUrl: "https://static.tsugi.org/img/spinner.gif", staticroot: "https://static.tsugi.org", apphome: "https://www.py4e.com", wwwroot: "https://www.py4e.com/tsugi", websocket_url: false, websocket_token: false, react_token: "m1h1la7bfsmlhvrfb69rp1ghf5", window_close_message: "Application complete - You can close this tab.", session_expire_message: "Your session has expired" } </script> <!-- Tiny bit of JS --> <script src="https://static.tsugi.org/js/tsugiscripts_head.js"></script> <!-- Le styles --> <link href="https://static.tsugi.org/bootstrap-3.4.1/css/bootstrap.min.css" rel="stylesheet"> <link href="https://static.tsugi.org/js/jquery-ui-1.11.4/jquery-ui.min.css" rel="stylesheet"> <link href="https://static.tsugi.org/fontawesome-free-5.8.2-web/css/all.css" rel="stylesheet"> <link href="https://static.tsugi.org/fontawesome-free-5.8.2-web/css/v4-shims.css" rel="stylesheet"> <style>:root {--primary:#0D47A1; --primary-menu:#0D47A1; --primary-border:#0d4295; --primary-darker:#0c4091; --primary-darkest:#0b3b85; --background-color:#FFFFFF; --background-focus:#F5F5F5; --background-accent:#0D47A1; --secondary:#EEEEEE; --secondary-menu:#EEEEEE; --text:#111111; --text-light:#5E5E5E; --font-family:sans-serif; --font-size:14px; }</style> <link href="https://static.tsugi.org/css/tsugi2.css" rel="stylesheet"> <style> </style> <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="https://www.py4e.com/tsugi/vendor/tsugi/lib/static/js/html5shiv/html5shiv.js"></script> <script src="https://www.py4e.com/tsugi/vendor/tsugi/lib/static/js/respond/respond.min.js"></script> <![endif]--> <script type="text/javascript">CSRF_TOKEN = "TODORemoveThis";</script> </head> <body prefix="oer: http://oerschema.org"> <div id="body_container"> <script> if (window!=window.top) { document.getElementById("body_container").className = "container-fluid"; } else { document.getElementById("body_container").className = "container"; } </script> <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation" id="tsugi_main_nav_bar" style="display:none"> <div class="container-fluid"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="https://www.py4e.com">PY4E</a> </div> <div class="navbar-collapse collapse"> <ul class="nav navbar-nav navbar-main"> <li><a href="https://www.py4e.com/lessons" >Lessons</a></li> <li><a href="https://www.py4e.com/discussions" >Discussions</a></li> <li><a href="https://www.py4e.com/materials" >OER</a></li> </ul> <ul class="nav navbar-nav navbar-right"> <li><a href="https://online.dr-chuck.com" target="_blank" >Instructor</a></li> <li><a href="https://www.py4e.com/book" >Book</a></li> <li><a href="https://www.py4e.com/login" >Login</a></li> </ul> </div> <!--/.nav-collapse --> </div> <!--container --> </nav> <script> if ( ! inIframe() ) { document.getElementById('tsugi_main_nav_bar').style.display = 'block'; document.getElementsByTagName('body')[0].style.paddingTop = '5.93rem'; } else { document.getElementsByTagName('body')[0].style.paddingTop = '1.0rem'; } </script> <div id="flashmessages"></div><div style="margin: 30px"> <p> We here at PY4E use Google Accounts as our sole login. We do not want to spend a lot of time verifying identity, resetting passwords, detecting robot-login storms, and other issues so we let Google do that hard work. </p> <form method="post"> <input class="btn btn-warning" type="button" onclick="location.href='https://www.py4e.com'; return false;" value="Cancel" style="height: 2.5em;"/> <a href="https://accounts.google.com/o/oauth2/auth?client_id=249525053476-q7m2pt1cr813ujjae8g9cnr816k9mm4a.apps.googleusercontent.com&redirect_uri=https://www.py4e.com/tsugi/login&state=32559a7e60ce5cf1e86100b85fff47de&response_type=code&scope=email%20profile&include_granted_scopes=true&openid.realm=https://www.py4e.com/tsugi"><img src="https://static.tsugi.org/img/google_signin_buttons/2x/btn_google_signin_dark_normal_web@2x.png" title="Sign in with Google" style="height: 3em;"></a> </form> <p> So you must have a Google account and we will require your name and email address to login. We do not need and do not receive your password - only Google will ask you for your password. When you press login, you will be directed to the Google authentication system where you will be given the option to share your information with PY4E. </p> </div> <script src="https://static.tsugi.org/js/jquery-1.11.3.js"></script> <script src="https://static.tsugi.org/bootstrap-3.4.1/js/bootstrap.min.js"></script> <script src="https://static.tsugi.org/js/jquery-ui-1.11.4/jquery-ui.min.js"></script> <script src="https://static.tsugi.org/js/jquery.timeago-1.6.3.js"></script> <script src="https://static.tsugi.org/js/handlebars-v4.0.2.js"></script> <script src="https://static.tsugi.org/tmpljs-3.8.0/tmpl.min.js"></script> <script src="https://static.tsugi.org/js/tsugiscripts.js"></script> <script type="text/javascript"> HEARTBEAT_TIMEOUT = setTimeout(doHeartBeat, _TSUGI.heartbeat); tsugiEmbedMenu(); $(document).ready(function() { jQuery("time.timeago").timeago(); }); </script> <script> $('a').each(function (x) { var href = $(this).attr('href'); if ( ! href ) return; if ( ! href.startsWith('#') ) return; var pos = href.indexOf('/?'); if ( pos < 1 ) return; // console.dir('Patching broken # href='+href); href = href.substring(0,pos); $(this).attr('href', href); }); </script> </div></body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10