{"id":5557,"date":"2012-09-13T16:32:38","date_gmt":"2012-09-13T20:32:38","guid":{"rendered":"http:\/\/cscircles.cemc.uwaterloo.ca\/?page_id=5557"},"modified":"2024-07-11T03:55:07","modified_gmt":"2024-07-11T07:55:07","slug":"5-de","status":"publish","type":"page","link":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/5-de\/","title":{"rendered":"5: Eingabe"},"content":{"rendered":"<p>In der letzten Lektion haben wir bereits \u00fcber Benutzereingaben gesprochen, ohne darauf einzugehen, wie man an solche Eingaben kommt. In Python gibt der Benutzer f\u00fcr gew\u00f6hnlich eine ganze Zeile auf einmal ein. Mit der <code><code>input()<\/code><\/code>-Funktion kannst du diese Zeile erhalten. Die <code>input()<\/code>-Funktion nimmt keine Argumente an und gibt Daten immer im Typ <code>str<\/code> zur\u00fcck.<\/p>\n<p><table class='pywarn'><tr><td class='pywarnleft'><img src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/warning.png'\/><\/td><td class='pywarnright'><span> Auf dieser Webseite m\u00fcssen s\u00e4mtliche Benutzereingaben vor dem Programmstart angegeben werden. Wenn du <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/laufen-python-hause\/\">Python auf deinem Rechner<\/a> nutzt, pausiert <code>input()<\/code> das Programm, bis eine ganze Zeile angegeben wurde. <\/span><\/td><\/table><\/p>\n<p>Hier siehst du, wie man <code>input()<\/code> benutzt, um eine Eingabe zu erhalten. Die Eingabe wird hier automatisch eingetragen.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform0\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox0'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Eine Zeile Text wiedergeben:<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 58px;'><textarea wrap='off' name='usercode0' id='usercode0'  cols=10 rows=2 readonly='readonly'  style = 'height : 58px;'  class='pyboxCode RO'>\nline = input()\nprint(\"The first line of input is:\", line)<\/textarea><\/div>\n<div id='pbhistory0' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit0' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(0)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(0,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse0\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"0\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"45754eff19f82c3b4afce2cc48e03238\"\/>\n<div id='pbresults0' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit0\").value = \"Run program\";document.getElementById(\"inputInUse0\").value = \"N\";<\/script>\n<\/p>\n<p>Beachte, dass in obigen Beispiel die zweite Zeile gar nicht eingelesen wurde, da <code>input()<\/code> nur einmal aufgerufen wurde. Durch mehrfaches Ausf\u00fchren von <code>input()<\/code> kannst du mehrere Zeilen einlesen.<\/p>\n<p>Von nun an werden die meisten \u00dcbungen diese M\u00f6glichkeit haben; hier findest du ein einfaches Beispiel. Wie in Lektion 4 gesehen, kann man die Zeichenkette von <code>input()<\/code> in\u00a0<code>int<\/code>\u00a0oder\u00a0<code>float<\/code>\u00a0umwandeln.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform1\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox1'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Benutzung von <code>input()<\/code><div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode1' id='usercode1'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\ninputString = input()\naFloat = float(inputString)\nprint(aFloat + 1)<\/textarea><\/div>\n<div id='pbhistory1' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput1\">You may enter input for the program in the box below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit1' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch1\" value=\"Input Switch\" onclick=\"pbInputSwitch(1,'N')\" ><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(1)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(1,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse1\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"1\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"1fae7afc59f3dfefa82622c0d896e271\"\/>\n<div id='pbresults1' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>pbInputSwitch(1,\"N\");<\/script>\n<\/p>\n<p>Versuche folgendes: klicke den <strong>Testeingabe<\/strong>-Button oben. Lasse die Eingabebox leer oder l\u00f6sche alles, was dort eingegeben ist. Dann klicke <strong>Test ausf\u00fchren<\/strong>. Es sollte der Fehler<\/p>\n<pre style=\"position: relative;\">EOFError: EOF when reading a line<\/pre>\n<div class=\"open_grepper_editor\" title=\"Edit &amp; Save To Grepper\"><\/div>\n<p>auftreten.<br \/>\nDie Abk\u00fcrzung <strong>EOF<\/strong> steht f\u00fcr <strong>E<\/strong>nd <strong>O<\/strong>f <strong>F<\/strong>ile (Ende der Datei). Das bedeutet, dass das Programm versucht, mehr Eingaben zu erhalten, diese aber bereits aufgebraucht sind; und das f\u00fchrt zu diesem Fehler.<\/p>\n<p>In der n\u00e4chsten \u00dcbung musst du ein fehlerhaftes Programm korrigieren. Das Problem ist hier kein Tippfehler sondern ein <em>logischer Fehler<\/em>.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform2\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox2'>\n<img title='You have not yet completed this problem.' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/icon.png' class='pycheck'\/><div class=\"heading\"><span class='type'>Coding Exercise: <\/span><span class='title'>Echo<\/span><\/div>Schreibe ein Programm, das eine Zeile der Eingabe einliest und sie zweimal ausgibt. Beispiel: Ist die Eingabe\u00a0<code>Echo<\/code>\u00a0m\u00fcsste die Ausgabe<\/p>\n<pre style=\"position: relative;\">Echo\nEcho<\/pre>\n<div class=\"open_grepper_editor\" title=\"Edit &amp; Save To Grepper\"><\/div>\n<p>lauten. Korrigiere die Beispiell\u00f6sung (oder l\u00f6sche sie komplett und fange von vorne an).\u00a0<a class=\"hintlink\"  id=\"hintlink3\">Hinweis<\/a> <div class=\"helpOuter\" style=\"display: none;\"><div class=\"helpInner\"><div style=\"text-align: center\">You need to create an account and log in to ask a question.<\/div><\/div><\/div><div class='pyboxTextwrap pyboxCodewrap RW resizy'  style='height: 526px;'><textarea wrap='off' name='usercode2' id='usercode2'  cols=10 rows=20   class='pyboxCode RW'>\nprint(input())\nprint(input())\n<\/textarea><\/div>\n<div id='pbhistory2' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput2\">You may enter input for the program in the box below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<input type='hidden' id='defaultCode2' value='print(input())\\nprint(input())\\n'><\/input>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit2' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch2\" value=\"Input Switch\" onclick=\"pbInputSwitch(2,'N')\" ><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(2)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(2,'N')\" ><\/td>\n<\/tr><\/table><select id='pbSelect2' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(2,'5.echo')\" >History<\/option>\n<option name='default' data-pbonclick=\"pbSetText(2,descape($('#defaultCode2').val()))\" >Reset code to default<\/option>\n<option name='help' data-pbonclick=\"helpClick(2);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse2\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"2\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"c46092927452986086a5249a3c9a0295\"\/>\n<div id='pbresults2' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>pbInputSwitch(2,\"N\");<\/script>\n<\/p>\n<p>Du kannst jetzt mit der n\u00e4chsten Lektion \u00fcber <code><code>if<\/code><\/code>-Anweisungen (Bedingte Anweisungen) weitermachen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In der letzten Lektion haben wir bereits \u00fcber Benutzereingaben gesprochen, ohne darauf einzugehen, wie man an solche Eingaben kommt. In Python gibt der Benutzer f\u00fcr gew\u00f6hnlich eine ganze Zeile auf einmal ein. Mit der input()-Funktion kannst du diese Zeile erhalten. &hellip; <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/5-de\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2653,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-5557","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/5557","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/users\/2653"}],"replies":[{"embeddable":true,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/comments?post=5557"}],"version-history":[{"count":12,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/5557\/revisions"}],"predecessor-version":[{"id":15927,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/5557\/revisions\/15927"}],"wp:attachment":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/media?parent=5557"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}