[{"data":1,"prerenderedAt":3087},["ShallowReactive",2],{"doc-\u002Fexamples\u002Fpython-to-do-list-script-example":3},{"id":4,"title":5,"body":6,"description":3080,"extension":3081,"meta":3082,"navigation":182,"path":3083,"seo":3084,"stem":3085,"__hash__":3086},"content\u002Fexamples\u002Fpython-to-do-list-script-example.md","Python To-Do List Script Example",{"type":7,"value":8,"toc":3055},"minimark",[9,13,17,20,52,55,60,63,77,81,84,127,144,148,151,808,813,821,825,828,841,844,847,863,866,936,939,945,953,963,967,970,983,986,995,998,1010,1020,1196,1199,1214,1218,1221,1273,1276,1295,1298,1361,1368,1374,1377,1467,1471,1474,1503,1506,1509,1571,1578,1594,1596,1696,1698,1704,1712,1716,1719,1722,1782,1785,1812,1815,1828,1831,1879,1885,1896,1898,2013,2015,2021,2033,2036,2056,2060,2063,2066,2740,2743,2760,2767,2771,2774,2777,2794,2801,2805,2808,2841,2845,2848,2929,2932,2951,2958,2968,2972,2979,2982,2986,2989,2993,3002,3006,3009,3013,3048,3051],[10,11,5],"h1",{"id":12},"python-to-do-list-script-example",[14,15,16],"p",{},"This beginner-friendly project shows how to build a simple command-line to-do list script in Python.",[14,18,19],{},"It is a good example because it combines several core Python skills in one small program:",[21,22,23,27,30,36,42],"ul",{},[24,25,26],"li",{},"lists",[24,28,29],{},"loops",[24,31,32],{},[33,34,35],"code",{},"input()",[24,37,38,41],{},[33,39,40],{},"if"," statements",[24,43,44,45,48,49],{},"functions like ",[33,46,47],{},"append()"," and ",[33,50,51],{},"pop()",[14,53,54],{},"If you are still learning these basics, this example helps you see how they work together in a real script.",[56,57,59],"h2",{"id":58},"what-this-script-does","What this script does",[14,61,62],{},"This program:",[21,64,65,68,71,74],{},[24,66,67],{},"Creates a simple text-based to-do list",[24,69,70],{},"Lets the user view tasks, add tasks, and remove tasks",[24,72,73],{},"Stores tasks in a Python list",[24,75,76],{},"Runs in a loop until the user chooses to quit",[56,78,80],{"id":79},"skills-this-example-teaches","Skills this example teaches",[14,82,83],{},"By reading and running this script, you practice:",[21,85,86,89,95,101,114,121],{},[24,87,88],{},"How to store items in a list",[24,90,91,92,94],{},"How to use ",[33,93,35],{}," to get user choices",[24,96,91,97,100],{},[33,98,99],{},"while True"," for a menu loop",[24,102,91,103,105,106,109,110,113],{},[33,104,40],{},", ",[33,107,108],{},"elif",", and ",[33,111,112],{},"else"," to handle options",[24,115,91,116,48,118,120],{},[33,117,47],{},[33,119,51],{}," with lists",[24,122,123,124],{},"How to display numbered items with ",[33,125,126],{},"enumerate()",[14,128,129,130,105,135,109,139,143],{},"If you need more background first, see ",[131,132,134],"a",{"href":133},"\u002Flearn\u002Fpython-lists-explained-beginner-guide","Python lists explained for beginners",[131,136,138],{"href":137},"\u002Flearn\u002Fpython-while-loops-explained","Python while loops explained",[131,140,142],{"href":141},"\u002Flearn\u002Fpython-if-else-and-elif-explained","Python if, else, and elif explained",".",[56,145,147],{"id":146},"the-complete-to-do-list-script","The complete to-do list script",[14,149,150],{},"Here is the full runnable script:",[152,153,158],"pre",{"className":154,"code":155,"language":156,"meta":157,"style":157},"language-python shiki shiki-themes material-theme-lighter github-light github-dark","tasks = []\n\nwhile True:\n    print(\"\\nTo-Do List\")\n    print(\"1. View tasks\")\n    print(\"2. Add task\")\n    print(\"3. Remove task\")\n    print(\"4. Quit\")\n\n    choice = input(\"Choose an option: \")\n\n    if choice == \"1\":\n        if not tasks:\n            print(\"No tasks yet.\")\n        else:\n            for index, task in enumerate(tasks, start=1):\n                print(f\"{index}. {task}\")\n\n    elif choice == \"2\":\n        task = input(\"Enter a task: \")\n        tasks.append(task)\n        print(\"Task added.\")\n\n    elif choice == \"3\":\n        if not tasks:\n            print(\"No tasks to remove.\")\n        else:\n            for index, task in enumerate(tasks, start=1):\n                print(f\"{index}. {task}\")\n            number = int(input(\"Enter task number to remove: \"))\n            removed = tasks.pop(number - 1)\n            print(f\"Removed: {removed}\")\n\n    elif choice == \"4\":\n        print(\"Goodbye!\")\n        break\n\n    else:\n        print(\"Invalid choice.\")\n","python","",[33,159,160,177,184,198,225,241,257,273,289,294,316,321,343,357,374,382,423,460,465,484,505,522,539,544,562,573,589,596,625,654,683,711,734,739,757,773,779,784,792],{"__ignoreMap":157},[161,162,165,169,173],"span",{"class":163,"line":164},"line",1,[161,166,168],{"class":167},"su5hD","tasks ",[161,170,172],{"class":171},"smGrS","=",[161,174,176],{"class":175},"sP7_E"," []\n",[161,178,180],{"class":163,"line":179},2,[161,181,183],{"emptyLinePlaceholder":182},true,"\n",[161,185,187,191,195],{"class":163,"line":186},3,[161,188,190],{"class":189},"sVHd0","while",[161,192,194],{"class":193},"s39Yj"," True",[161,196,197],{"class":175},":\n",[161,199,201,205,208,212,216,220,222],{"class":163,"line":200},4,[161,202,204],{"class":203},"sptTA","    print",[161,206,207],{"class":175},"(",[161,209,211],{"class":210},"sjJ54","\"",[161,213,215],{"class":214},"s_hVV","\\n",[161,217,219],{"class":218},"s_sjI","To-Do List",[161,221,211],{"class":210},[161,223,224],{"class":175},")\n",[161,226,228,230,232,234,237,239],{"class":163,"line":227},5,[161,229,204],{"class":203},[161,231,207],{"class":175},[161,233,211],{"class":210},[161,235,236],{"class":218},"1. View tasks",[161,238,211],{"class":210},[161,240,224],{"class":175},[161,242,244,246,248,250,253,255],{"class":163,"line":243},6,[161,245,204],{"class":203},[161,247,207],{"class":175},[161,249,211],{"class":210},[161,251,252],{"class":218},"2. Add task",[161,254,211],{"class":210},[161,256,224],{"class":175},[161,258,260,262,264,266,269,271],{"class":163,"line":259},7,[161,261,204],{"class":203},[161,263,207],{"class":175},[161,265,211],{"class":210},[161,267,268],{"class":218},"3. Remove task",[161,270,211],{"class":210},[161,272,224],{"class":175},[161,274,276,278,280,282,285,287],{"class":163,"line":275},8,[161,277,204],{"class":203},[161,279,207],{"class":175},[161,281,211],{"class":210},[161,283,284],{"class":218},"4. Quit",[161,286,211],{"class":210},[161,288,224],{"class":175},[161,290,292],{"class":163,"line":291},9,[161,293,183],{"emptyLinePlaceholder":182},[161,295,297,300,302,305,307,309,312,314],{"class":163,"line":296},10,[161,298,299],{"class":167},"    choice ",[161,301,172],{"class":171},[161,303,304],{"class":203}," input",[161,306,207],{"class":175},[161,308,211],{"class":210},[161,310,311],{"class":218},"Choose an option: ",[161,313,211],{"class":210},[161,315,224],{"class":175},[161,317,319],{"class":163,"line":318},11,[161,320,183],{"emptyLinePlaceholder":182},[161,322,324,327,330,333,336,339,341],{"class":163,"line":323},12,[161,325,326],{"class":189},"    if",[161,328,329],{"class":167}," choice ",[161,331,332],{"class":171},"==",[161,334,335],{"class":210}," \"",[161,337,338],{"class":218},"1",[161,340,211],{"class":210},[161,342,197],{"class":175},[161,344,346,349,352,355],{"class":163,"line":345},13,[161,347,348],{"class":189},"        if",[161,350,351],{"class":171}," not",[161,353,354],{"class":167}," tasks",[161,356,197],{"class":175},[161,358,360,363,365,367,370,372],{"class":163,"line":359},14,[161,361,362],{"class":203},"            print",[161,364,207],{"class":175},[161,366,211],{"class":210},[161,368,369],{"class":218},"No tasks yet.",[161,371,211],{"class":210},[161,373,224],{"class":175},[161,375,377,380],{"class":163,"line":376},15,[161,378,379],{"class":189},"        else",[161,381,197],{"class":175},[161,383,385,388,391,394,397,400,403,405,409,411,415,417,420],{"class":163,"line":384},16,[161,386,387],{"class":189},"            for",[161,389,390],{"class":167}," index",[161,392,393],{"class":175},",",[161,395,396],{"class":167}," task ",[161,398,399],{"class":189},"in",[161,401,402],{"class":203}," enumerate",[161,404,207],{"class":175},[161,406,408],{"class":407},"slqww","tasks",[161,410,393],{"class":175},[161,412,414],{"class":413},"s99_P"," start",[161,416,172],{"class":171},[161,418,338],{"class":419},"srdBf",[161,421,422],{"class":175},"):\n",[161,424,426,429,431,435,437,440,443,446,449,451,454,456,458],{"class":163,"line":425},17,[161,427,428],{"class":203},"                print",[161,430,207],{"class":175},[161,432,434],{"class":433},"sbsja","f",[161,436,211],{"class":218},[161,438,439],{"class":419},"{",[161,441,442],{"class":407},"index",[161,444,445],{"class":419},"}",[161,447,448],{"class":218},". ",[161,450,439],{"class":419},[161,452,453],{"class":407},"task",[161,455,445],{"class":419},[161,457,211],{"class":218},[161,459,224],{"class":175},[161,461,463],{"class":163,"line":462},18,[161,464,183],{"emptyLinePlaceholder":182},[161,466,468,471,473,475,477,480,482],{"class":163,"line":467},19,[161,469,470],{"class":189},"    elif",[161,472,329],{"class":167},[161,474,332],{"class":171},[161,476,335],{"class":210},[161,478,479],{"class":218},"2",[161,481,211],{"class":210},[161,483,197],{"class":175},[161,485,487,490,492,494,496,498,501,503],{"class":163,"line":486},20,[161,488,489],{"class":167},"        task ",[161,491,172],{"class":171},[161,493,304],{"class":203},[161,495,207],{"class":175},[161,497,211],{"class":210},[161,499,500],{"class":218},"Enter a task: ",[161,502,211],{"class":210},[161,504,224],{"class":175},[161,506,508,511,513,516,518,520],{"class":163,"line":507},21,[161,509,510],{"class":167},"        tasks",[161,512,143],{"class":175},[161,514,515],{"class":407},"append",[161,517,207],{"class":175},[161,519,453],{"class":407},[161,521,224],{"class":175},[161,523,525,528,530,532,535,537],{"class":163,"line":524},22,[161,526,527],{"class":203},"        print",[161,529,207],{"class":175},[161,531,211],{"class":210},[161,533,534],{"class":218},"Task added.",[161,536,211],{"class":210},[161,538,224],{"class":175},[161,540,542],{"class":163,"line":541},23,[161,543,183],{"emptyLinePlaceholder":182},[161,545,547,549,551,553,555,558,560],{"class":163,"line":546},24,[161,548,470],{"class":189},[161,550,329],{"class":167},[161,552,332],{"class":171},[161,554,335],{"class":210},[161,556,557],{"class":218},"3",[161,559,211],{"class":210},[161,561,197],{"class":175},[161,563,565,567,569,571],{"class":163,"line":564},25,[161,566,348],{"class":189},[161,568,351],{"class":171},[161,570,354],{"class":167},[161,572,197],{"class":175},[161,574,576,578,580,582,585,587],{"class":163,"line":575},26,[161,577,362],{"class":203},[161,579,207],{"class":175},[161,581,211],{"class":210},[161,583,584],{"class":218},"No tasks to remove.",[161,586,211],{"class":210},[161,588,224],{"class":175},[161,590,592,594],{"class":163,"line":591},27,[161,593,379],{"class":189},[161,595,197],{"class":175},[161,597,599,601,603,605,607,609,611,613,615,617,619,621,623],{"class":163,"line":598},28,[161,600,387],{"class":189},[161,602,390],{"class":167},[161,604,393],{"class":175},[161,606,396],{"class":167},[161,608,399],{"class":189},[161,610,402],{"class":203},[161,612,207],{"class":175},[161,614,408],{"class":407},[161,616,393],{"class":175},[161,618,414],{"class":413},[161,620,172],{"class":171},[161,622,338],{"class":419},[161,624,422],{"class":175},[161,626,628,630,632,634,636,638,640,642,644,646,648,650,652],{"class":163,"line":627},29,[161,629,428],{"class":203},[161,631,207],{"class":175},[161,633,434],{"class":433},[161,635,211],{"class":218},[161,637,439],{"class":419},[161,639,442],{"class":407},[161,641,445],{"class":419},[161,643,448],{"class":218},[161,645,439],{"class":419},[161,647,453],{"class":407},[161,649,445],{"class":419},[161,651,211],{"class":218},[161,653,224],{"class":175},[161,655,657,660,662,666,668,671,673,675,678,680],{"class":163,"line":656},30,[161,658,659],{"class":167},"            number ",[161,661,172],{"class":171},[161,663,665],{"class":664},"sZMiF"," int",[161,667,207],{"class":175},[161,669,670],{"class":203},"input",[161,672,207],{"class":175},[161,674,211],{"class":210},[161,676,677],{"class":218},"Enter task number to remove: ",[161,679,211],{"class":210},[161,681,682],{"class":175},"))\n",[161,684,686,689,691,693,695,698,700,703,706,709],{"class":163,"line":685},31,[161,687,688],{"class":167},"            removed ",[161,690,172],{"class":171},[161,692,354],{"class":167},[161,694,143],{"class":175},[161,696,697],{"class":407},"pop",[161,699,207],{"class":175},[161,701,702],{"class":407},"number ",[161,704,705],{"class":171},"-",[161,707,708],{"class":419}," 1",[161,710,224],{"class":175},[161,712,714,716,718,720,723,725,728,730,732],{"class":163,"line":713},32,[161,715,362],{"class":203},[161,717,207],{"class":175},[161,719,434],{"class":433},[161,721,722],{"class":218},"\"Removed: ",[161,724,439],{"class":419},[161,726,727],{"class":407},"removed",[161,729,445],{"class":419},[161,731,211],{"class":218},[161,733,224],{"class":175},[161,735,737],{"class":163,"line":736},33,[161,738,183],{"emptyLinePlaceholder":182},[161,740,742,744,746,748,750,753,755],{"class":163,"line":741},34,[161,743,470],{"class":189},[161,745,329],{"class":167},[161,747,332],{"class":171},[161,749,335],{"class":210},[161,751,752],{"class":218},"4",[161,754,211],{"class":210},[161,756,197],{"class":175},[161,758,760,762,764,766,769,771],{"class":163,"line":759},35,[161,761,527],{"class":203},[161,763,207],{"class":175},[161,765,211],{"class":210},[161,767,768],{"class":218},"Goodbye!",[161,770,211],{"class":210},[161,772,224],{"class":175},[161,774,776],{"class":163,"line":775},36,[161,777,778],{"class":189},"        break\n",[161,780,782],{"class":163,"line":781},37,[161,783,183],{"emptyLinePlaceholder":182},[161,785,787,790],{"class":163,"line":786},38,[161,788,789],{"class":189},"    else",[161,791,197],{"class":175},[161,793,795,797,799,801,804,806],{"class":163,"line":794},39,[161,796,527],{"class":203},[161,798,207],{"class":175},[161,800,211],{"class":210},[161,802,803],{"class":218},"Invalid choice.",[161,805,211],{"class":210},[161,807,224],{"class":175},[809,810,812],"h3",{"id":811},"sample-interaction","Sample interaction",[152,814,819],{"className":815,"code":817,"language":818,"meta":157},[816],"language-text","To-Do List\n1. View tasks\n2. Add task\n3. Remove task\n4. Quit\nChoose an option: 2\nEnter a task: Buy milk\nTask added.\n\nTo-Do List\n1. View tasks\n2. Add task\n3. Remove task\n4. Quit\nChoose an option: 1\n1. Buy milk\n\nTo-Do List\n1. View tasks\n2. Add task\n3. Remove task\n4. Quit\nChoose an option: 3\n1. Buy milk\nEnter task number to remove: 1\nRemoved: Buy milk\n","text",[33,820,817],{"__ignoreMap":157},[56,822,824],{"id":823},"how-the-task-list-is-stored","How the task list is stored",[14,826,827],{},"The line below creates an empty list:",[152,829,831],{"className":154,"code":830,"language":156,"meta":157,"style":157},"tasks = []\n",[33,832,833],{"__ignoreMap":157},[161,834,835,837,839],{"class":163,"line":164},[161,836,168],{"class":167},[161,838,172],{"class":171},[161,840,176],{"class":175},[14,842,843],{},"This list holds all tasks while the program is running.",[14,845,846],{},"Important points:",[21,848,849,854,857,860],{},[24,850,851,853],{},[33,852,408],{}," starts empty",[24,855,856],{},"Each task is stored as a string",[24,858,859],{},"New tasks are added to the end of the list",[24,861,862],{},"Removing a task changes the list only in memory",[14,864,865],{},"For example:",[152,867,869],{"className":154,"code":868,"language":156,"meta":157,"style":157},"tasks = []\n\ntasks.append(\"Buy milk\")\ntasks.append(\"Study Python\")\n\nprint(tasks)\n",[33,870,871,879,883,902,921,925],{"__ignoreMap":157},[161,872,873,875,877],{"class":163,"line":164},[161,874,168],{"class":167},[161,876,172],{"class":171},[161,878,176],{"class":175},[161,880,881],{"class":163,"line":179},[161,882,183],{"emptyLinePlaceholder":182},[161,884,885,887,889,891,893,895,898,900],{"class":163,"line":186},[161,886,408],{"class":167},[161,888,143],{"class":175},[161,890,515],{"class":407},[161,892,207],{"class":175},[161,894,211],{"class":210},[161,896,897],{"class":218},"Buy milk",[161,899,211],{"class":210},[161,901,224],{"class":175},[161,903,904,906,908,910,912,914,917,919],{"class":163,"line":200},[161,905,408],{"class":167},[161,907,143],{"class":175},[161,909,515],{"class":407},[161,911,207],{"class":175},[161,913,211],{"class":210},[161,915,916],{"class":218},"Study Python",[161,918,211],{"class":210},[161,920,224],{"class":175},[161,922,923],{"class":163,"line":227},[161,924,183],{"emptyLinePlaceholder":182},[161,926,927,930,932,934],{"class":163,"line":243},[161,928,929],{"class":203},"print",[161,931,207],{"class":175},[161,933,408],{"class":407},[161,935,224],{"class":175},[14,937,938],{},"Output:",[152,940,943],{"className":941,"code":942,"language":818,"meta":157},[816],"['Buy milk', 'Study Python']\n",[33,944,942],{"__ignoreMap":157},[14,946,947,948,952],{},"The basic version does ",[949,950,951],"strong",{},"not"," save tasks to a file. That means when you close the program, the list disappears.",[14,954,955,956,143],{},"If you want to understand the add method in more detail, see ",[131,957,959,960,962],{"href":958},"\u002Freference\u002Fpython-list-append-method","Python list ",[33,961,47],{}," method",[56,964,966],{"id":965},"how-the-menu-loop-works","How the menu loop works",[14,968,969],{},"The whole program runs inside this loop:",[152,971,973],{"className":154,"code":972,"language":156,"meta":157,"style":157},"while True:\n",[33,974,975],{"__ignoreMap":157},[161,976,977,979,981],{"class":163,"line":164},[161,978,190],{"class":189},[161,980,194],{"class":193},[161,982,197],{"class":175},[14,984,985],{},"This means the menu keeps showing again and again until the program reaches:",[152,987,989],{"className":154,"code":988,"language":156,"meta":157,"style":157},"break\n",[33,990,991],{"__ignoreMap":157},[161,992,993],{"class":163,"line":164},[161,994,988],{"class":189},[14,996,997],{},"Inside the loop, the program:",[999,1000,1001,1004,1007],"ol",{},[24,1002,1003],{},"Prints the menu",[24,1005,1006],{},"Gets the user's choice",[24,1008,1009],{},"Runs a different block of code based on that choice",[14,1011,1012,1013,105,1015,109,1017,1019],{},"The choice is handled with ",[33,1014,40],{},[33,1016,108],{},[33,1018,112],{},":",[152,1021,1023],{"className":154,"code":1022,"language":156,"meta":157,"style":157},"choice = input(\"Choose an option: \")\n\nif choice == \"1\":\n    print(\"View tasks\")\nelif choice == \"2\":\n    print(\"Add task\")\nelif choice == \"3\":\n    print(\"Remove task\")\nelif choice == \"4\":\n    print(\"Goodbye!\")\n    break\nelse:\n    print(\"Invalid choice.\")\n",[33,1024,1025,1044,1048,1064,1079,1095,1110,1126,1141,1157,1171,1176,1182],{"__ignoreMap":157},[161,1026,1027,1030,1032,1034,1036,1038,1040,1042],{"class":163,"line":164},[161,1028,1029],{"class":167},"choice ",[161,1031,172],{"class":171},[161,1033,304],{"class":203},[161,1035,207],{"class":175},[161,1037,211],{"class":210},[161,1039,311],{"class":218},[161,1041,211],{"class":210},[161,1043,224],{"class":175},[161,1045,1046],{"class":163,"line":179},[161,1047,183],{"emptyLinePlaceholder":182},[161,1049,1050,1052,1054,1056,1058,1060,1062],{"class":163,"line":186},[161,1051,40],{"class":189},[161,1053,329],{"class":167},[161,1055,332],{"class":171},[161,1057,335],{"class":210},[161,1059,338],{"class":218},[161,1061,211],{"class":210},[161,1063,197],{"class":175},[161,1065,1066,1068,1070,1072,1075,1077],{"class":163,"line":200},[161,1067,204],{"class":203},[161,1069,207],{"class":175},[161,1071,211],{"class":210},[161,1073,1074],{"class":218},"View tasks",[161,1076,211],{"class":210},[161,1078,224],{"class":175},[161,1080,1081,1083,1085,1087,1089,1091,1093],{"class":163,"line":227},[161,1082,108],{"class":189},[161,1084,329],{"class":167},[161,1086,332],{"class":171},[161,1088,335],{"class":210},[161,1090,479],{"class":218},[161,1092,211],{"class":210},[161,1094,197],{"class":175},[161,1096,1097,1099,1101,1103,1106,1108],{"class":163,"line":243},[161,1098,204],{"class":203},[161,1100,207],{"class":175},[161,1102,211],{"class":210},[161,1104,1105],{"class":218},"Add task",[161,1107,211],{"class":210},[161,1109,224],{"class":175},[161,1111,1112,1114,1116,1118,1120,1122,1124],{"class":163,"line":259},[161,1113,108],{"class":189},[161,1115,329],{"class":167},[161,1117,332],{"class":171},[161,1119,335],{"class":210},[161,1121,557],{"class":218},[161,1123,211],{"class":210},[161,1125,197],{"class":175},[161,1127,1128,1130,1132,1134,1137,1139],{"class":163,"line":275},[161,1129,204],{"class":203},[161,1131,207],{"class":175},[161,1133,211],{"class":210},[161,1135,1136],{"class":218},"Remove task",[161,1138,211],{"class":210},[161,1140,224],{"class":175},[161,1142,1143,1145,1147,1149,1151,1153,1155],{"class":163,"line":291},[161,1144,108],{"class":189},[161,1146,329],{"class":167},[161,1148,332],{"class":171},[161,1150,335],{"class":210},[161,1152,752],{"class":218},[161,1154,211],{"class":210},[161,1156,197],{"class":175},[161,1158,1159,1161,1163,1165,1167,1169],{"class":163,"line":296},[161,1160,204],{"class":203},[161,1162,207],{"class":175},[161,1164,211],{"class":210},[161,1166,768],{"class":218},[161,1168,211],{"class":210},[161,1170,224],{"class":175},[161,1172,1173],{"class":163,"line":318},[161,1174,1175],{"class":189},"    break\n",[161,1177,1178,1180],{"class":163,"line":323},[161,1179,112],{"class":189},[161,1181,197],{"class":175},[161,1183,1184,1186,1188,1190,1192,1194],{"class":163,"line":345},[161,1185,204],{"class":203},[161,1187,207],{"class":175},[161,1189,211],{"class":210},[161,1191,803],{"class":218},[161,1193,211],{"class":210},[161,1195,224],{"class":175},[14,1197,1198],{},"This is a common pattern in simple command-line programs.",[14,1200,1201,1202,1209,1210,143],{},"If you want more detail on user input, see ",[131,1203,1205,1206,1208],{"href":1204},"\u002Freference\u002Fpython-input-function-explained","Python ",[33,1207,35],{}," function explained"," or ",[131,1211,1213],{"href":1212},"\u002Fhow-to\u002Fhow-to-get-user-input-in-python","how to get user input in Python",[56,1215,1217],{"id":1216},"how-adding-a-task-works","How adding a task works",[14,1219,1220],{},"The add option uses this code:",[152,1222,1224],{"className":154,"code":1223,"language":156,"meta":157,"style":157},"task = input(\"Enter a task: \")\ntasks.append(task)\nprint(\"Task added.\")\n",[33,1225,1226,1245,1259],{"__ignoreMap":157},[161,1227,1228,1231,1233,1235,1237,1239,1241,1243],{"class":163,"line":164},[161,1229,1230],{"class":167},"task ",[161,1232,172],{"class":171},[161,1234,304],{"class":203},[161,1236,207],{"class":175},[161,1238,211],{"class":210},[161,1240,500],{"class":218},[161,1242,211],{"class":210},[161,1244,224],{"class":175},[161,1246,1247,1249,1251,1253,1255,1257],{"class":163,"line":179},[161,1248,408],{"class":167},[161,1250,143],{"class":175},[161,1252,515],{"class":407},[161,1254,207],{"class":175},[161,1256,453],{"class":407},[161,1258,224],{"class":175},[161,1260,1261,1263,1265,1267,1269,1271],{"class":163,"line":186},[161,1262,929],{"class":203},[161,1264,207],{"class":175},[161,1266,211],{"class":210},[161,1268,534],{"class":218},[161,1270,211],{"class":210},[161,1272,224],{"class":175},[14,1274,1275],{},"What happens here:",[21,1277,1278,1281,1286,1292],{},[24,1279,1280],{},"The program asks the user for task text",[24,1282,1283,1284],{},"The text is saved in the variable ",[33,1285,453],{},[24,1287,1288,1291],{},[33,1289,1290],{},"tasks.append(task)"," adds it to the list",[24,1293,1294],{},"A short confirmation message is printed",[14,1296,1297],{},"Example:",[152,1299,1301],{"className":154,"code":1300,"language":156,"meta":157,"style":157},"tasks = []\n\ntask = input(\"Enter a task: \")\ntasks.append(task)\n\nprint(tasks)\n",[33,1302,1303,1311,1315,1333,1347,1351],{"__ignoreMap":157},[161,1304,1305,1307,1309],{"class":163,"line":164},[161,1306,168],{"class":167},[161,1308,172],{"class":171},[161,1310,176],{"class":175},[161,1312,1313],{"class":163,"line":179},[161,1314,183],{"emptyLinePlaceholder":182},[161,1316,1317,1319,1321,1323,1325,1327,1329,1331],{"class":163,"line":186},[161,1318,1230],{"class":167},[161,1320,172],{"class":171},[161,1322,304],{"class":203},[161,1324,207],{"class":175},[161,1326,211],{"class":210},[161,1328,500],{"class":218},[161,1330,211],{"class":210},[161,1332,224],{"class":175},[161,1334,1335,1337,1339,1341,1343,1345],{"class":163,"line":200},[161,1336,408],{"class":167},[161,1338,143],{"class":175},[161,1340,515],{"class":407},[161,1342,207],{"class":175},[161,1344,453],{"class":407},[161,1346,224],{"class":175},[161,1348,1349],{"class":163,"line":227},[161,1350,183],{"emptyLinePlaceholder":182},[161,1352,1353,1355,1357,1359],{"class":163,"line":243},[161,1354,929],{"class":203},[161,1356,207],{"class":175},[161,1358,408],{"class":407},[161,1360,224],{"class":175},[14,1362,1363,1364,1367],{},"If the user types ",[33,1365,1366],{},"Wash dishes",", the list becomes:",[152,1369,1372],{"className":1370,"code":1371,"language":818,"meta":157},[816],"['Wash dishes']\n",[33,1373,1371],{"__ignoreMap":157},[14,1375,1376],{},"You could also improve this by checking for empty input:",[152,1378,1380],{"className":154,"code":1379,"language":156,"meta":157,"style":157},"task = input(\"Enter a task: \")\n\nif task == \"\":\n    print(\"Task cannot be empty.\")\nelse:\n    tasks.append(task)\n    print(\"Task added.\")\n",[33,1381,1382,1400,1404,1417,1432,1438,1453],{"__ignoreMap":157},[161,1383,1384,1386,1388,1390,1392,1394,1396,1398],{"class":163,"line":164},[161,1385,1230],{"class":167},[161,1387,172],{"class":171},[161,1389,304],{"class":203},[161,1391,207],{"class":175},[161,1393,211],{"class":210},[161,1395,500],{"class":218},[161,1397,211],{"class":210},[161,1399,224],{"class":175},[161,1401,1402],{"class":163,"line":179},[161,1403,183],{"emptyLinePlaceholder":182},[161,1405,1406,1408,1410,1412,1415],{"class":163,"line":186},[161,1407,40],{"class":189},[161,1409,396],{"class":167},[161,1411,332],{"class":171},[161,1413,1414],{"class":210}," \"\"",[161,1416,197],{"class":175},[161,1418,1419,1421,1423,1425,1428,1430],{"class":163,"line":200},[161,1420,204],{"class":203},[161,1422,207],{"class":175},[161,1424,211],{"class":210},[161,1426,1427],{"class":218},"Task cannot be empty.",[161,1429,211],{"class":210},[161,1431,224],{"class":175},[161,1433,1434,1436],{"class":163,"line":227},[161,1435,112],{"class":189},[161,1437,197],{"class":175},[161,1439,1440,1443,1445,1447,1449,1451],{"class":163,"line":243},[161,1441,1442],{"class":167},"    tasks",[161,1444,143],{"class":175},[161,1446,515],{"class":407},[161,1448,207],{"class":175},[161,1450,453],{"class":407},[161,1452,224],{"class":175},[161,1454,1455,1457,1459,1461,1463,1465],{"class":163,"line":259},[161,1456,204],{"class":203},[161,1458,207],{"class":175},[161,1460,211],{"class":210},[161,1462,534],{"class":218},[161,1464,211],{"class":210},[161,1466,224],{"class":175},[56,1468,1470],{"id":1469},"how-viewing-tasks-works","How viewing tasks works",[14,1472,1473],{},"The view option first checks whether the list is empty:",[152,1475,1477],{"className":154,"code":1476,"language":156,"meta":157,"style":157},"if not tasks:\n    print(\"No tasks yet.\")\n",[33,1478,1479,1489],{"__ignoreMap":157},[161,1480,1481,1483,1485,1487],{"class":163,"line":164},[161,1482,40],{"class":189},[161,1484,351],{"class":171},[161,1486,354],{"class":167},[161,1488,197],{"class":175},[161,1490,1491,1493,1495,1497,1499,1501],{"class":163,"line":179},[161,1492,204],{"class":203},[161,1494,207],{"class":175},[161,1496,211],{"class":210},[161,1498,369],{"class":218},[161,1500,211],{"class":210},[161,1502,224],{"class":175},[14,1504,1505],{},"This is a simple way to test whether a list has any items.",[14,1507,1508],{},"If the list is not empty, the script prints each task with a number:",[152,1510,1512],{"className":154,"code":1511,"language":156,"meta":157,"style":157},"for index, task in enumerate(tasks, start=1):\n    print(f\"{index}. {task}\")\n",[33,1513,1514,1543],{"__ignoreMap":157},[161,1515,1516,1519,1521,1523,1525,1527,1529,1531,1533,1535,1537,1539,1541],{"class":163,"line":164},[161,1517,1518],{"class":189},"for",[161,1520,390],{"class":167},[161,1522,393],{"class":175},[161,1524,396],{"class":167},[161,1526,399],{"class":189},[161,1528,402],{"class":203},[161,1530,207],{"class":175},[161,1532,408],{"class":407},[161,1534,393],{"class":175},[161,1536,414],{"class":413},[161,1538,172],{"class":171},[161,1540,338],{"class":419},[161,1542,422],{"class":175},[161,1544,1545,1547,1549,1551,1553,1555,1557,1559,1561,1563,1565,1567,1569],{"class":163,"line":179},[161,1546,204],{"class":203},[161,1548,207],{"class":175},[161,1550,434],{"class":433},[161,1552,211],{"class":218},[161,1554,439],{"class":419},[161,1556,442],{"class":407},[161,1558,445],{"class":419},[161,1560,448],{"class":218},[161,1562,439],{"class":419},[161,1564,453],{"class":407},[161,1566,445],{"class":419},[161,1568,211],{"class":218},[161,1570,224],{"class":175},[14,1572,1573,1574,1577],{},"Why use ",[33,1575,1576],{},"enumerate(tasks, start=1)","?",[21,1579,1580,1585,1591],{},[24,1581,1582,1584],{},[33,1583,126],{}," gives both the position and the value",[24,1586,1587,1590],{},[33,1588,1589],{},"start=1"," makes the numbering begin at 1 instead of 0",[24,1592,1593],{},"This is easier for users to read",[14,1595,1297],{},[152,1597,1599],{"className":154,"code":1598,"language":156,"meta":157,"style":157},"tasks = [\"Buy milk\", \"Call Sam\", \"Study Python\"]\n\nfor index, task in enumerate(tasks, start=1):\n    print(f\"{index}. {task}\")\n",[33,1600,1601,1636,1640,1668],{"__ignoreMap":157},[161,1602,1603,1605,1607,1610,1612,1614,1616,1618,1620,1623,1625,1627,1629,1631,1633],{"class":163,"line":164},[161,1604,168],{"class":167},[161,1606,172],{"class":171},[161,1608,1609],{"class":175}," [",[161,1611,211],{"class":210},[161,1613,897],{"class":218},[161,1615,211],{"class":210},[161,1617,393],{"class":175},[161,1619,335],{"class":210},[161,1621,1622],{"class":218},"Call Sam",[161,1624,211],{"class":210},[161,1626,393],{"class":175},[161,1628,335],{"class":210},[161,1630,916],{"class":218},[161,1632,211],{"class":210},[161,1634,1635],{"class":175},"]\n",[161,1637,1638],{"class":163,"line":179},[161,1639,183],{"emptyLinePlaceholder":182},[161,1641,1642,1644,1646,1648,1650,1652,1654,1656,1658,1660,1662,1664,1666],{"class":163,"line":186},[161,1643,1518],{"class":189},[161,1645,390],{"class":167},[161,1647,393],{"class":175},[161,1649,396],{"class":167},[161,1651,399],{"class":189},[161,1653,402],{"class":203},[161,1655,207],{"class":175},[161,1657,408],{"class":407},[161,1659,393],{"class":175},[161,1661,414],{"class":413},[161,1663,172],{"class":171},[161,1665,338],{"class":419},[161,1667,422],{"class":175},[161,1669,1670,1672,1674,1676,1678,1680,1682,1684,1686,1688,1690,1692,1694],{"class":163,"line":200},[161,1671,204],{"class":203},[161,1673,207],{"class":175},[161,1675,434],{"class":433},[161,1677,211],{"class":218},[161,1679,439],{"class":419},[161,1681,442],{"class":407},[161,1683,445],{"class":419},[161,1685,448],{"class":218},[161,1687,439],{"class":419},[161,1689,453],{"class":407},[161,1691,445],{"class":419},[161,1693,211],{"class":218},[161,1695,224],{"class":175},[14,1697,938],{},[152,1699,1702],{"className":1700,"code":1701,"language":818,"meta":157},[816],"1. Buy milk\n2. Call Sam\n3. Study Python\n",[33,1703,1701],{"__ignoreMap":157},[14,1705,1706,1707,143],{},"For more on this, see ",[131,1708,1205,1710,1208],{"href":1709},"\u002Freference\u002Fpython-enumerate-function-explained",[33,1711,126],{},[56,1713,1715],{"id":1714},"how-removing-a-task-works","How removing a task works",[14,1717,1718],{},"Removing a task takes a few more steps.",[14,1720,1721],{},"First, the script shows the numbered task list:",[152,1723,1724],{"className":154,"code":1511,"language":156,"meta":157,"style":157},[33,1725,1726,1754],{"__ignoreMap":157},[161,1727,1728,1730,1732,1734,1736,1738,1740,1742,1744,1746,1748,1750,1752],{"class":163,"line":164},[161,1729,1518],{"class":189},[161,1731,390],{"class":167},[161,1733,393],{"class":175},[161,1735,396],{"class":167},[161,1737,399],{"class":189},[161,1739,402],{"class":203},[161,1741,207],{"class":175},[161,1743,408],{"class":407},[161,1745,393],{"class":175},[161,1747,414],{"class":413},[161,1749,172],{"class":171},[161,1751,338],{"class":419},[161,1753,422],{"class":175},[161,1755,1756,1758,1760,1762,1764,1766,1768,1770,1772,1774,1776,1778,1780],{"class":163,"line":179},[161,1757,204],{"class":203},[161,1759,207],{"class":175},[161,1761,434],{"class":433},[161,1763,211],{"class":218},[161,1765,439],{"class":419},[161,1767,442],{"class":407},[161,1769,445],{"class":419},[161,1771,448],{"class":218},[161,1773,439],{"class":419},[161,1775,453],{"class":407},[161,1777,445],{"class":419},[161,1779,211],{"class":218},[161,1781,224],{"class":175},[14,1783,1784],{},"Then it asks which task to remove:",[152,1786,1788],{"className":154,"code":1787,"language":156,"meta":157,"style":157},"number = int(input(\"Enter task number to remove: \"))\n",[33,1789,1790],{"__ignoreMap":157},[161,1791,1792,1794,1796,1798,1800,1802,1804,1806,1808,1810],{"class":163,"line":164},[161,1793,702],{"class":167},[161,1795,172],{"class":171},[161,1797,665],{"class":664},[161,1799,207],{"class":175},[161,1801,670],{"class":203},[161,1803,207],{"class":175},[161,1805,211],{"class":210},[161,1807,677],{"class":218},[161,1809,211],{"class":210},[161,1811,682],{"class":175},[14,1813,1814],{},"This line does two things:",[21,1816,1817,1822],{},[24,1818,1819,1821],{},[33,1820,35],{}," gets text from the user",[24,1823,1824,1827],{},[33,1825,1826],{},"int()"," converts that text into a number",[14,1829,1830],{},"Finally, it removes the item:",[152,1832,1834],{"className":154,"code":1833,"language":156,"meta":157,"style":157},"removed = tasks.pop(number - 1)\nprint(f\"Removed: {removed}\")\n",[33,1835,1836,1859],{"__ignoreMap":157},[161,1837,1838,1841,1843,1845,1847,1849,1851,1853,1855,1857],{"class":163,"line":164},[161,1839,1840],{"class":167},"removed ",[161,1842,172],{"class":171},[161,1844,354],{"class":167},[161,1846,143],{"class":175},[161,1848,697],{"class":407},[161,1850,207],{"class":175},[161,1852,702],{"class":407},[161,1854,705],{"class":171},[161,1856,708],{"class":419},[161,1858,224],{"class":175},[161,1860,1861,1863,1865,1867,1869,1871,1873,1875,1877],{"class":163,"line":179},[161,1862,929],{"class":203},[161,1864,207],{"class":175},[161,1866,434],{"class":433},[161,1868,722],{"class":218},[161,1870,439],{"class":419},[161,1872,727],{"class":407},[161,1874,445],{"class":419},[161,1876,211],{"class":218},[161,1878,224],{"class":175},[14,1880,1881,1882,1577],{},"Why ",[33,1883,1884],{},"number - 1",[21,1886,1887,1890,1893],{},[24,1888,1889],{},"Users count tasks as 1, 2, 3",[24,1891,1892],{},"Python list indexes are 0, 1, 2",[24,1894,1895],{},"So task 1 is actually index 0",[14,1897,1297],{},[152,1899,1901],{"className":154,"code":1900,"language":156,"meta":157,"style":157},"tasks = [\"Buy milk\", \"Call Sam\", \"Study Python\"]\n\nnumber = 2\nremoved = tasks.pop(number - 1)\n\nprint(\"Removed:\", removed)\nprint(\"Remaining tasks:\", tasks)\n",[33,1902,1903,1935,1939,1948,1970,1974,1994],{"__ignoreMap":157},[161,1904,1905,1907,1909,1911,1913,1915,1917,1919,1921,1923,1925,1927,1929,1931,1933],{"class":163,"line":164},[161,1906,168],{"class":167},[161,1908,172],{"class":171},[161,1910,1609],{"class":175},[161,1912,211],{"class":210},[161,1914,897],{"class":218},[161,1916,211],{"class":210},[161,1918,393],{"class":175},[161,1920,335],{"class":210},[161,1922,1622],{"class":218},[161,1924,211],{"class":210},[161,1926,393],{"class":175},[161,1928,335],{"class":210},[161,1930,916],{"class":218},[161,1932,211],{"class":210},[161,1934,1635],{"class":175},[161,1936,1937],{"class":163,"line":179},[161,1938,183],{"emptyLinePlaceholder":182},[161,1940,1941,1943,1945],{"class":163,"line":186},[161,1942,702],{"class":167},[161,1944,172],{"class":171},[161,1946,1947],{"class":419}," 2\n",[161,1949,1950,1952,1954,1956,1958,1960,1962,1964,1966,1968],{"class":163,"line":200},[161,1951,1840],{"class":167},[161,1953,172],{"class":171},[161,1955,354],{"class":167},[161,1957,143],{"class":175},[161,1959,697],{"class":407},[161,1961,207],{"class":175},[161,1963,702],{"class":407},[161,1965,705],{"class":171},[161,1967,708],{"class":419},[161,1969,224],{"class":175},[161,1971,1972],{"class":163,"line":227},[161,1973,183],{"emptyLinePlaceholder":182},[161,1975,1976,1978,1980,1982,1985,1987,1989,1992],{"class":163,"line":243},[161,1977,929],{"class":203},[161,1979,207],{"class":175},[161,1981,211],{"class":210},[161,1983,1984],{"class":218},"Removed:",[161,1986,211],{"class":210},[161,1988,393],{"class":175},[161,1990,1991],{"class":407}," removed",[161,1993,224],{"class":175},[161,1995,1996,1998,2000,2002,2005,2007,2009,2011],{"class":163,"line":259},[161,1997,929],{"class":203},[161,1999,207],{"class":175},[161,2001,211],{"class":210},[161,2003,2004],{"class":218},"Remaining tasks:",[161,2006,211],{"class":210},[161,2008,393],{"class":175},[161,2010,354],{"class":407},[161,2012,224],{"class":175},[14,2014,938],{},[152,2016,2019],{"className":2017,"code":2018,"language":818,"meta":157},[816],"Removed: Call Sam\nRemaining tasks: ['Buy milk', 'Study Python']\n",[33,2020,2018],{"__ignoreMap":157},[14,2022,2023,2024,2026,2027,2032],{},"The ",[33,2025,51],{}," method removes an item and returns it at the same time. See ",[131,2028,959,2030,962],{"href":2029},"\u002Freference\u002Fpython-list-pop-method",[33,2031,51],{}," for more details.",[14,2034,2035],{},"Be careful here:",[21,2037,2038,2047],{},[24,2039,2040,2041,2043,2044],{},"If the user types text instead of a number, ",[33,2042,1826],{}," can raise a ",[33,2045,2046],{},"ValueError",[24,2048,2049,2050,2052,2053],{},"If the number is too large or too small, ",[33,2051,51],{}," can raise an ",[33,2054,2055],{},"IndexError",[56,2057,2059],{"id":2058},"a-safer-version-with-basic-error-handling","A safer version with basic error handling",[14,2061,2062],{},"The first script works, but the remove section can crash if the user enters bad input.",[14,2064,2065],{},"Here is a safer version with basic error handling:",[152,2067,2069],{"className":154,"code":2068,"language":156,"meta":157,"style":157},"tasks = []\n\nwhile True:\n    print(\"\\nTo-Do List\")\n    print(\"1. View tasks\")\n    print(\"2. Add task\")\n    print(\"3. Remove task\")\n    print(\"4. Quit\")\n\n    choice = input(\"Choose an option: \")\n\n    if choice == \"1\":\n        if not tasks:\n            print(\"No tasks yet.\")\n        else:\n            for index, task in enumerate(tasks, start=1):\n                print(f\"{index}. {task}\")\n\n    elif choice == \"2\":\n        task = input(\"Enter a task: \").strip()\n        if task == \"\":\n            print(\"Task cannot be empty.\")\n        else:\n            tasks.append(task)\n            print(\"Task added.\")\n\n    elif choice == \"3\":\n        if not tasks:\n            print(\"No tasks to remove.\")\n        else:\n            for index, task in enumerate(tasks, start=1):\n                print(f\"{index}. {task}\")\n\n            try:\n                number = int(input(\"Enter task number to remove: \"))\n\n                if number \u003C 1 or number > len(tasks):\n                    print(\"That task number does not exist.\")\n                else:\n                    removed = tasks.pop(number - 1)\n                    print(f\"Removed: {removed}\")\n\n            except ValueError:\n                print(\"Please enter a valid number.\")\n\n    elif choice == \"4\":\n        print(\"Goodbye!\")\n        break\n\n    else:\n        print(\"Invalid choice.\")\n",[33,2070,2071,2079,2083,2091,2107,2121,2135,2149,2163,2167,2185,2189,2205,2215,2229,2235,2263,2291,2295,2311,2336,2348,2362,2368,2383,2397,2401,2417,2427,2441,2447,2475,2503,2507,2514,2537,2541,2571,2587,2594,2618,2639,2644,2655,2671,2676,2693,2708,2713,2718,2725],{"__ignoreMap":157},[161,2072,2073,2075,2077],{"class":163,"line":164},[161,2074,168],{"class":167},[161,2076,172],{"class":171},[161,2078,176],{"class":175},[161,2080,2081],{"class":163,"line":179},[161,2082,183],{"emptyLinePlaceholder":182},[161,2084,2085,2087,2089],{"class":163,"line":186},[161,2086,190],{"class":189},[161,2088,194],{"class":193},[161,2090,197],{"class":175},[161,2092,2093,2095,2097,2099,2101,2103,2105],{"class":163,"line":200},[161,2094,204],{"class":203},[161,2096,207],{"class":175},[161,2098,211],{"class":210},[161,2100,215],{"class":214},[161,2102,219],{"class":218},[161,2104,211],{"class":210},[161,2106,224],{"class":175},[161,2108,2109,2111,2113,2115,2117,2119],{"class":163,"line":227},[161,2110,204],{"class":203},[161,2112,207],{"class":175},[161,2114,211],{"class":210},[161,2116,236],{"class":218},[161,2118,211],{"class":210},[161,2120,224],{"class":175},[161,2122,2123,2125,2127,2129,2131,2133],{"class":163,"line":243},[161,2124,204],{"class":203},[161,2126,207],{"class":175},[161,2128,211],{"class":210},[161,2130,252],{"class":218},[161,2132,211],{"class":210},[161,2134,224],{"class":175},[161,2136,2137,2139,2141,2143,2145,2147],{"class":163,"line":259},[161,2138,204],{"class":203},[161,2140,207],{"class":175},[161,2142,211],{"class":210},[161,2144,268],{"class":218},[161,2146,211],{"class":210},[161,2148,224],{"class":175},[161,2150,2151,2153,2155,2157,2159,2161],{"class":163,"line":275},[161,2152,204],{"class":203},[161,2154,207],{"class":175},[161,2156,211],{"class":210},[161,2158,284],{"class":218},[161,2160,211],{"class":210},[161,2162,224],{"class":175},[161,2164,2165],{"class":163,"line":291},[161,2166,183],{"emptyLinePlaceholder":182},[161,2168,2169,2171,2173,2175,2177,2179,2181,2183],{"class":163,"line":296},[161,2170,299],{"class":167},[161,2172,172],{"class":171},[161,2174,304],{"class":203},[161,2176,207],{"class":175},[161,2178,211],{"class":210},[161,2180,311],{"class":218},[161,2182,211],{"class":210},[161,2184,224],{"class":175},[161,2186,2187],{"class":163,"line":318},[161,2188,183],{"emptyLinePlaceholder":182},[161,2190,2191,2193,2195,2197,2199,2201,2203],{"class":163,"line":323},[161,2192,326],{"class":189},[161,2194,329],{"class":167},[161,2196,332],{"class":171},[161,2198,335],{"class":210},[161,2200,338],{"class":218},[161,2202,211],{"class":210},[161,2204,197],{"class":175},[161,2206,2207,2209,2211,2213],{"class":163,"line":345},[161,2208,348],{"class":189},[161,2210,351],{"class":171},[161,2212,354],{"class":167},[161,2214,197],{"class":175},[161,2216,2217,2219,2221,2223,2225,2227],{"class":163,"line":359},[161,2218,362],{"class":203},[161,2220,207],{"class":175},[161,2222,211],{"class":210},[161,2224,369],{"class":218},[161,2226,211],{"class":210},[161,2228,224],{"class":175},[161,2230,2231,2233],{"class":163,"line":376},[161,2232,379],{"class":189},[161,2234,197],{"class":175},[161,2236,2237,2239,2241,2243,2245,2247,2249,2251,2253,2255,2257,2259,2261],{"class":163,"line":384},[161,2238,387],{"class":189},[161,2240,390],{"class":167},[161,2242,393],{"class":175},[161,2244,396],{"class":167},[161,2246,399],{"class":189},[161,2248,402],{"class":203},[161,2250,207],{"class":175},[161,2252,408],{"class":407},[161,2254,393],{"class":175},[161,2256,414],{"class":413},[161,2258,172],{"class":171},[161,2260,338],{"class":419},[161,2262,422],{"class":175},[161,2264,2265,2267,2269,2271,2273,2275,2277,2279,2281,2283,2285,2287,2289],{"class":163,"line":425},[161,2266,428],{"class":203},[161,2268,207],{"class":175},[161,2270,434],{"class":433},[161,2272,211],{"class":218},[161,2274,439],{"class":419},[161,2276,442],{"class":407},[161,2278,445],{"class":419},[161,2280,448],{"class":218},[161,2282,439],{"class":419},[161,2284,453],{"class":407},[161,2286,445],{"class":419},[161,2288,211],{"class":218},[161,2290,224],{"class":175},[161,2292,2293],{"class":163,"line":462},[161,2294,183],{"emptyLinePlaceholder":182},[161,2296,2297,2299,2301,2303,2305,2307,2309],{"class":163,"line":467},[161,2298,470],{"class":189},[161,2300,329],{"class":167},[161,2302,332],{"class":171},[161,2304,335],{"class":210},[161,2306,479],{"class":218},[161,2308,211],{"class":210},[161,2310,197],{"class":175},[161,2312,2313,2315,2317,2319,2321,2323,2325,2327,2330,2333],{"class":163,"line":486},[161,2314,489],{"class":167},[161,2316,172],{"class":171},[161,2318,304],{"class":203},[161,2320,207],{"class":175},[161,2322,211],{"class":210},[161,2324,500],{"class":218},[161,2326,211],{"class":210},[161,2328,2329],{"class":175},").",[161,2331,2332],{"class":407},"strip",[161,2334,2335],{"class":175},"()\n",[161,2337,2338,2340,2342,2344,2346],{"class":163,"line":507},[161,2339,348],{"class":189},[161,2341,396],{"class":167},[161,2343,332],{"class":171},[161,2345,1414],{"class":210},[161,2347,197],{"class":175},[161,2349,2350,2352,2354,2356,2358,2360],{"class":163,"line":524},[161,2351,362],{"class":203},[161,2353,207],{"class":175},[161,2355,211],{"class":210},[161,2357,1427],{"class":218},[161,2359,211],{"class":210},[161,2361,224],{"class":175},[161,2363,2364,2366],{"class":163,"line":541},[161,2365,379],{"class":189},[161,2367,197],{"class":175},[161,2369,2370,2373,2375,2377,2379,2381],{"class":163,"line":546},[161,2371,2372],{"class":167},"            tasks",[161,2374,143],{"class":175},[161,2376,515],{"class":407},[161,2378,207],{"class":175},[161,2380,453],{"class":407},[161,2382,224],{"class":175},[161,2384,2385,2387,2389,2391,2393,2395],{"class":163,"line":564},[161,2386,362],{"class":203},[161,2388,207],{"class":175},[161,2390,211],{"class":210},[161,2392,534],{"class":218},[161,2394,211],{"class":210},[161,2396,224],{"class":175},[161,2398,2399],{"class":163,"line":575},[161,2400,183],{"emptyLinePlaceholder":182},[161,2402,2403,2405,2407,2409,2411,2413,2415],{"class":163,"line":591},[161,2404,470],{"class":189},[161,2406,329],{"class":167},[161,2408,332],{"class":171},[161,2410,335],{"class":210},[161,2412,557],{"class":218},[161,2414,211],{"class":210},[161,2416,197],{"class":175},[161,2418,2419,2421,2423,2425],{"class":163,"line":598},[161,2420,348],{"class":189},[161,2422,351],{"class":171},[161,2424,354],{"class":167},[161,2426,197],{"class":175},[161,2428,2429,2431,2433,2435,2437,2439],{"class":163,"line":627},[161,2430,362],{"class":203},[161,2432,207],{"class":175},[161,2434,211],{"class":210},[161,2436,584],{"class":218},[161,2438,211],{"class":210},[161,2440,224],{"class":175},[161,2442,2443,2445],{"class":163,"line":656},[161,2444,379],{"class":189},[161,2446,197],{"class":175},[161,2448,2449,2451,2453,2455,2457,2459,2461,2463,2465,2467,2469,2471,2473],{"class":163,"line":685},[161,2450,387],{"class":189},[161,2452,390],{"class":167},[161,2454,393],{"class":175},[161,2456,396],{"class":167},[161,2458,399],{"class":189},[161,2460,402],{"class":203},[161,2462,207],{"class":175},[161,2464,408],{"class":407},[161,2466,393],{"class":175},[161,2468,414],{"class":413},[161,2470,172],{"class":171},[161,2472,338],{"class":419},[161,2474,422],{"class":175},[161,2476,2477,2479,2481,2483,2485,2487,2489,2491,2493,2495,2497,2499,2501],{"class":163,"line":713},[161,2478,428],{"class":203},[161,2480,207],{"class":175},[161,2482,434],{"class":433},[161,2484,211],{"class":218},[161,2486,439],{"class":419},[161,2488,442],{"class":407},[161,2490,445],{"class":419},[161,2492,448],{"class":218},[161,2494,439],{"class":419},[161,2496,453],{"class":407},[161,2498,445],{"class":419},[161,2500,211],{"class":218},[161,2502,224],{"class":175},[161,2504,2505],{"class":163,"line":736},[161,2506,183],{"emptyLinePlaceholder":182},[161,2508,2509,2512],{"class":163,"line":741},[161,2510,2511],{"class":189},"            try",[161,2513,197],{"class":175},[161,2515,2516,2519,2521,2523,2525,2527,2529,2531,2533,2535],{"class":163,"line":759},[161,2517,2518],{"class":167},"                number ",[161,2520,172],{"class":171},[161,2522,665],{"class":664},[161,2524,207],{"class":175},[161,2526,670],{"class":203},[161,2528,207],{"class":175},[161,2530,211],{"class":210},[161,2532,677],{"class":218},[161,2534,211],{"class":210},[161,2536,682],{"class":175},[161,2538,2539],{"class":163,"line":775},[161,2540,183],{"emptyLinePlaceholder":182},[161,2542,2543,2546,2549,2552,2554,2557,2559,2562,2565,2567,2569],{"class":163,"line":781},[161,2544,2545],{"class":189},"                if",[161,2547,2548],{"class":167}," number ",[161,2550,2551],{"class":171},"\u003C",[161,2553,708],{"class":419},[161,2555,2556],{"class":171}," or",[161,2558,2548],{"class":167},[161,2560,2561],{"class":171},">",[161,2563,2564],{"class":203}," len",[161,2566,207],{"class":175},[161,2568,408],{"class":407},[161,2570,422],{"class":175},[161,2572,2573,2576,2578,2580,2583,2585],{"class":163,"line":786},[161,2574,2575],{"class":203},"                    print",[161,2577,207],{"class":175},[161,2579,211],{"class":210},[161,2581,2582],{"class":218},"That task number does not exist.",[161,2584,211],{"class":210},[161,2586,224],{"class":175},[161,2588,2589,2592],{"class":163,"line":794},[161,2590,2591],{"class":189},"                else",[161,2593,197],{"class":175},[161,2595,2597,2600,2602,2604,2606,2608,2610,2612,2614,2616],{"class":163,"line":2596},40,[161,2598,2599],{"class":167},"                    removed ",[161,2601,172],{"class":171},[161,2603,354],{"class":167},[161,2605,143],{"class":175},[161,2607,697],{"class":407},[161,2609,207],{"class":175},[161,2611,702],{"class":407},[161,2613,705],{"class":171},[161,2615,708],{"class":419},[161,2617,224],{"class":175},[161,2619,2621,2623,2625,2627,2629,2631,2633,2635,2637],{"class":163,"line":2620},41,[161,2622,2575],{"class":203},[161,2624,207],{"class":175},[161,2626,434],{"class":433},[161,2628,722],{"class":218},[161,2630,439],{"class":419},[161,2632,727],{"class":407},[161,2634,445],{"class":419},[161,2636,211],{"class":218},[161,2638,224],{"class":175},[161,2640,2642],{"class":163,"line":2641},42,[161,2643,183],{"emptyLinePlaceholder":182},[161,2645,2647,2650,2653],{"class":163,"line":2646},43,[161,2648,2649],{"class":189},"            except",[161,2651,2652],{"class":664}," ValueError",[161,2654,197],{"class":175},[161,2656,2658,2660,2662,2664,2667,2669],{"class":163,"line":2657},44,[161,2659,428],{"class":203},[161,2661,207],{"class":175},[161,2663,211],{"class":210},[161,2665,2666],{"class":218},"Please enter a valid number.",[161,2668,211],{"class":210},[161,2670,224],{"class":175},[161,2672,2674],{"class":163,"line":2673},45,[161,2675,183],{"emptyLinePlaceholder":182},[161,2677,2679,2681,2683,2685,2687,2689,2691],{"class":163,"line":2678},46,[161,2680,470],{"class":189},[161,2682,329],{"class":167},[161,2684,332],{"class":171},[161,2686,335],{"class":210},[161,2688,752],{"class":218},[161,2690,211],{"class":210},[161,2692,197],{"class":175},[161,2694,2696,2698,2700,2702,2704,2706],{"class":163,"line":2695},47,[161,2697,527],{"class":203},[161,2699,207],{"class":175},[161,2701,211],{"class":210},[161,2703,768],{"class":218},[161,2705,211],{"class":210},[161,2707,224],{"class":175},[161,2709,2711],{"class":163,"line":2710},48,[161,2712,778],{"class":189},[161,2714,2716],{"class":163,"line":2715},49,[161,2717,183],{"emptyLinePlaceholder":182},[161,2719,2721,2723],{"class":163,"line":2720},50,[161,2722,789],{"class":189},[161,2724,197],{"class":175},[161,2726,2728,2730,2732,2734,2736,2738],{"class":163,"line":2727},51,[161,2729,527],{"class":203},[161,2731,207],{"class":175},[161,2733,211],{"class":210},[161,2735,803],{"class":218},[161,2737,211],{"class":210},[161,2739,224],{"class":175},[14,2741,2742],{},"This version improves the program by:",[21,2744,2745,2751,2754],{},[24,2746,2747,2748,2750],{},"Handling ",[33,2749,2046],{}," if the user types text",[24,2752,2753],{},"Checking that the task number is in range",[24,2755,2756,2757],{},"Avoiding empty tasks with ",[33,2758,2759],{},".strip()",[14,2761,2762,2763,143],{},"If you want to learn this pattern, see ",[131,2764,2766],{"href":2765},"\u002Fhow-to\u002Fhow-to-handle-exceptions-in-python","how to handle exceptions in Python",[56,2768,2770],{"id":2769},"ways-to-improve-the-project","Ways to improve the project",[14,2772,2773],{},"Once the basic version works, you can extend it.",[14,2775,2776],{},"Good next steps:",[21,2778,2779,2782,2785,2788,2791],{},[24,2780,2781],{},"Mark tasks as done",[24,2783,2784],{},"Save tasks to a file",[24,2786,2787],{},"Load tasks when the program starts",[24,2789,2790],{},"Sort tasks by priority",[24,2792,2793],{},"Split repeated code into functions",[14,2795,2796,2797,143],{},"For example, saving tasks to a file is a natural next project. A related example is ",[131,2798,2800],{"href":2799},"\u002Fexamples\u002Fpython-read-and-write-text-file-example","Python read and write text file example",[56,2802,2804],{"id":2803},"common-mistakes","Common mistakes",[14,2806,2807],{},"These are some common problems beginners run into with this project:",[21,2809,2810,2819,2822,2825,2828,2834],{},[24,2811,2812,2813,2815,2816,2818],{},"Forgetting to convert ",[33,2814,35],{}," to ",[33,2817,1826],{}," before using it as a number",[24,2820,2821],{},"Using the task number directly instead of subtracting 1",[24,2823,2824],{},"Trying to remove a task when the list is empty",[24,2826,2827],{},"Entering a task number that does not exist",[24,2829,2830,2831,2833],{},"Accidentally using ",[33,2832,515],{}," without parentheses",[24,2835,2836,2837,2840],{},"Placing ",[33,2838,2839],{},"break"," outside the loop",[809,2842,2844],{"id":2843},"helpful-debugging-prints","Helpful debugging prints",[14,2846,2847],{},"If something is not working, print values to see what the program is doing:",[152,2849,2851],{"className":154,"code":2850,"language":156,"meta":157,"style":157},"print(tasks)\nprint(choice)\nprint(number)\nprint(len(tasks))\nprint(type(choice))\nprint(type(number))\n",[33,2852,2853,2863,2874,2885,2900,2915],{"__ignoreMap":157},[161,2854,2855,2857,2859,2861],{"class":163,"line":164},[161,2856,929],{"class":203},[161,2858,207],{"class":175},[161,2860,408],{"class":407},[161,2862,224],{"class":175},[161,2864,2865,2867,2869,2872],{"class":163,"line":179},[161,2866,929],{"class":203},[161,2868,207],{"class":175},[161,2870,2871],{"class":407},"choice",[161,2873,224],{"class":175},[161,2875,2876,2878,2880,2883],{"class":163,"line":186},[161,2877,929],{"class":203},[161,2879,207],{"class":175},[161,2881,2882],{"class":407},"number",[161,2884,224],{"class":175},[161,2886,2887,2889,2891,2894,2896,2898],{"class":163,"line":200},[161,2888,929],{"class":203},[161,2890,207],{"class":175},[161,2892,2893],{"class":203},"len",[161,2895,207],{"class":175},[161,2897,408],{"class":407},[161,2899,682],{"class":175},[161,2901,2902,2904,2906,2909,2911,2913],{"class":163,"line":227},[161,2903,929],{"class":203},[161,2905,207],{"class":175},[161,2907,2908],{"class":664},"type",[161,2910,207],{"class":175},[161,2912,2871],{"class":407},[161,2914,682],{"class":175},[161,2916,2917,2919,2921,2923,2925,2927],{"class":163,"line":243},[161,2918,929],{"class":203},[161,2920,207],{"class":175},[161,2922,2908],{"class":664},[161,2924,207],{"class":175},[161,2926,2882],{"class":407},[161,2928,682],{"class":175},[14,2930,2931],{},"These can help you answer questions like:",[21,2933,2934,2940,2945],{},[24,2935,2936,2937,2939],{},"Is ",[33,2938,2871],{}," a string or a number?",[24,2941,2936,2942,2944],{},[33,2943,2882],{}," the value you expected?",[24,2946,2947,2948,2950],{},"Does ",[33,2949,408],{}," contain what you think it contains?",[14,2952,2953,2954,143],{},"If you get an out-of-range error, see ",[131,2955,2957],{"href":2956},"\u002Ferrors\u002Findexerror-list-index-out-of-range-fix-explained","IndexError: list index out of range fix explained",[14,2959,2960,2961,2963,2964,143],{},"If ",[33,2962,1826],{}," fails, see ",[131,2965,2967],{"href":2966},"\u002Ferrors\u002Fvalueerror-invalid-literal-for-int-with-base-10-fix","ValueError: invalid literal for int() with base 10 fix",[56,2969,2971],{"id":2970},"faq","FAQ",[809,2973,2975,2976,2978],{"id":2974},"why-does-the-script-use-number-1-when-removing-a-task","Why does the script use ",[33,2977,1884],{}," when removing a task?",[14,2980,2981],{},"Users usually count from 1, but Python list indexes start at 0. Subtracting 1 matches the user's number to the correct list position.",[809,2983,2985],{"id":2984},"why-are-my-tasks-lost-when-i-close-the-program","Why are my tasks lost when I close the program?",[14,2987,2988],{},"The basic version stores tasks only in memory. To keep them after the program closes, save them to a file.",[809,2990,2992],{"id":2991},"what-error-happens-if-i-type-text-instead-of-a-task-number","What error happens if I type text instead of a task number?",[14,2994,2995,2996,2998,2999,3001],{},"You may get ",[33,2997,2046],{}," when ",[33,3000,1826],{}," tries to convert text that is not a valid number.",[809,3003,3005],{"id":3004},"can-i-build-this-project-with-functions","Can I build this project with functions?",[14,3007,3008],{},"Yes. A cleaner version can use separate functions for showing tasks, adding tasks, and removing tasks.",[56,3010,3012],{"id":3011},"see-also","See also",[21,3014,3015,3019,3025,3031,3037,3043],{},[24,3016,3017],{},[131,3018,134],{"href":133},[24,3020,3021],{},[131,3022,959,3023,962],{"href":958},[33,3024,47],{},[24,3026,3027],{},[131,3028,959,3029,962],{"href":2029},[33,3030,51],{},[24,3032,3033],{},[131,3034,1205,3035,1208],{"href":1709},[33,3036,126],{},[24,3038,3039],{},[131,3040,1205,3041,1208],{"href":1204},[33,3042,35],{},[24,3044,3045],{},[131,3046,3047],{"href":2765},"How to handle exceptions in Python",[14,3049,3050],{},"Copy the script, run it, and then improve it. A great next step is adding file saving or moving repeated code into functions.",[3052,3053,3054],"style",{},"html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sptTA, html code.shiki .sptTA{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .slqww, html code.shiki .slqww{--shiki-light:#6182B8;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s99_P, html code.shiki .s99_P{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZMiF, html code.shiki .sZMiF{--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":157,"searchDepth":179,"depth":179,"links":3056},[3057,3058,3059,3062,3063,3064,3065,3066,3067,3068,3069,3072,3079],{"id":58,"depth":179,"text":59},{"id":79,"depth":179,"text":80},{"id":146,"depth":179,"text":147,"children":3060},[3061],{"id":811,"depth":186,"text":812},{"id":823,"depth":179,"text":824},{"id":965,"depth":179,"text":966},{"id":1216,"depth":179,"text":1217},{"id":1469,"depth":179,"text":1470},{"id":1714,"depth":179,"text":1715},{"id":2058,"depth":179,"text":2059},{"id":2769,"depth":179,"text":2770},{"id":2803,"depth":179,"text":2804,"children":3070},[3071],{"id":2843,"depth":186,"text":2844},{"id":2970,"depth":179,"text":2971,"children":3073},[3074,3076,3077,3078],{"id":2974,"depth":186,"text":3075},"Why does the script use number - 1 when removing a task?",{"id":2984,"depth":186,"text":2985},{"id":2991,"depth":186,"text":2992},{"id":3004,"depth":186,"text":3005},{"id":3011,"depth":179,"text":3012},"Master python to do list script example in our comprehensive Python beginner guide.","md",{},"\u002Fexamples\u002Fpython-to-do-list-script-example",{"title":5,"description":3080},"examples\u002Fpython-to-do-list-script-example","lNDUgwJ74f8DN-gfISbFa30414v6dMDypK3kGtMdeQ4",1777585507889]