[{"data":1,"prerenderedAt":2183},["ShallowReactive",2],{"doc-\u002Ferrors\u002Fassertionerror-in-python-causes-and-fixes":3},{"id":4,"title":5,"body":6,"description":2176,"extension":2177,"meta":2178,"navigation":83,"path":2179,"seo":2180,"stem":2181,"__hash__":2182},"content\u002Ferrors\u002Fassertionerror-in-python-causes-and-fixes.md","AssertionError in Python: Causes and Fixes",{"type":7,"value":8,"toc":2141},"minimark",[9,13,29,32,37,119,129,150,158,162,170,176,184,187,190,201,205,208,211,223,226,247,250,253,287,293,297,300,340,343,428,431,456,461,464,490,492,548,551,555,560,586,589,642,648,652,655,660,663,697,704,707,739,745,749,752,816,818,859,862,927,931,934,1021,1024,1027,1098,1101,1105,1108,1111,1132,1135,1164,1172,1178,1188,1248,1254,1261,1265,1271,1273,1359,1366,1369,1441,1443,1471,1474,1477,1487,1490,1494,1503,1510,1521,1523,1616,1626,1637,1639,1700,1703,1715,1719,1725,1751,1753,1846,1848,1904,1907,1911,1917,1921,1934,1939,1960,1970,1974,1989,1993,2014,2017,2021,2024,2026,2053,2059,2063,2067,2074,2078,2084,2088,2097,2101,2109,2113,2137],[10,11,5],"h1",{"id":12},"assertionerror-in-python-causes-and-fixes",[14,15,16,20,21,24,25,28],"p",{},[17,18,19],"code",{},"AssertionError"," happens when an ",[17,22,23],{},"assert"," statement checks a condition and that condition is ",[17,26,27],{},"False",".",[14,30,31],{},"This error usually means your program reached a state that the code assumed should never happen. It is common in debugging, tests, and code that checks important assumptions.",[33,34,36],"h2",{"id":35},"quick-fix","Quick fix",[38,39,44],"pre",{"className":40,"code":41,"language":42,"meta":43,"style":43},"language-python shiki shiki-themes material-theme-lighter github-light github-dark","age = 20\nassert age >= 18\n\nname = \"\"\nassert name, \"name must not be empty\"\n","python","",[17,45,46,63,78,85,97],{"__ignoreMap":43},[47,48,51,55,59],"span",{"class":49,"line":50},"line",1,[47,52,54],{"class":53},"su5hD","age ",[47,56,58],{"class":57},"smGrS","=",[47,60,62],{"class":61},"srdBf"," 20\n",[47,64,66,69,72,75],{"class":49,"line":65},2,[47,67,23],{"class":68},"sVHd0",[47,70,71],{"class":53}," age ",[47,73,74],{"class":57},">=",[47,76,77],{"class":61}," 18\n",[47,79,81],{"class":49,"line":80},3,[47,82,84],{"emptyLinePlaceholder":83},true,"\n",[47,86,88,91,93],{"class":49,"line":87},4,[47,89,90],{"class":53},"name ",[47,92,58],{"class":57},[47,94,96],{"class":95},"sjJ54"," \"\"\n",[47,98,100,102,105,109,112,116],{"class":49,"line":99},5,[47,101,23],{"class":68},[47,103,104],{"class":53}," name",[47,106,108],{"class":107},"sP7_E",",",[47,110,111],{"class":95}," \"",[47,113,115],{"class":114},"s_sjI","name must not be empty",[47,117,118],{"class":95},"\"\n",[14,120,121,20,123,125,126,128],{},[17,122,19],{},[17,124,23],{}," condition is ",[17,127,27],{},". To fix it:",[130,131,132,136,139,144],"ul",{},[133,134,135],"li",{},"Check whether the condition is correct",[133,137,138],{},"Check whether the variable value is correct",[133,140,141,142],{},"Add a useful message to the ",[17,143,23],{},[133,145,146,147,149],{},"Do not use ",[17,148,23],{}," for normal user input validation",[14,151,152,153,28],{},"For broader background, see ",[154,155,157],"a",{"href":156},"\u002Flearn\u002Fpython-errors-and-exceptions-explained\u002F","Python errors and exceptions explained",[33,159,161],{"id":160},"what-assertionerror-means","What AssertionError means",[14,163,164,166,167,169],{},[17,165,19],{}," is raised when an ",[17,168,23],{}," statement fails.",[14,171,172,173,175],{},"An ",[17,174,23],{}," statement is a quick way to say:",[130,177,178,181],{},[133,179,180],{},"\"This condition should be true\"",[133,182,183],{},"\"If it is not true, stop the program here\"",[14,185,186],{},"For example, if your code assumes a number must be positive, you might write an assertion to check that assumption.",[14,188,189],{},"Assertions are often used:",[130,191,192,195,198],{},[133,193,194],{},"While debugging",[133,196,197],{},"In tests",[133,199,200],{},"To catch incorrect program states early",[33,202,204],{"id":203},"basic-syntax-of-assert","Basic syntax of assert",[14,206,207],{},"There are two common forms.",[14,209,210],{},"Basic form:",[38,212,214],{"className":40,"code":213,"language":42,"meta":43,"style":43},"assert condition\n",[17,215,216],{"__ignoreMap":43},[47,217,218,220],{"class":49,"line":50},[47,219,23],{"class":68},[47,221,222],{"class":53}," condition\n",[14,224,225],{},"With a custom message:",[38,227,229],{"className":40,"code":228,"language":42,"meta":43,"style":43},"assert condition, \"message\"\n",[17,230,231],{"__ignoreMap":43},[47,232,233,235,238,240,242,245],{"class":49,"line":50},[47,234,23],{"class":68},[47,236,237],{"class":53}," condition",[47,239,108],{"class":107},[47,241,111],{"class":95},[47,243,244],{"class":114},"message",[47,246,118],{"class":95},[14,248,249],{},"The second form is usually better because it tells you what went wrong.",[14,251,252],{},"Example:",[38,254,256],{"className":40,"code":255,"language":42,"meta":43,"style":43},"age = 16\nassert age >= 18, \"age must be at least 18\"\n",[17,257,258,267],{"__ignoreMap":43},[47,259,260,262,264],{"class":49,"line":50},[47,261,54],{"class":53},[47,263,58],{"class":57},[47,265,266],{"class":61}," 16\n",[47,268,269,271,273,275,278,280,282,285],{"class":49,"line":65},[47,270,23],{"class":68},[47,272,71],{"class":53},[47,274,74],{"class":57},[47,276,277],{"class":61}," 18",[47,279,108],{"class":107},[47,281,111],{"class":95},[47,283,284],{"class":114},"age must be at least 18",[47,286,118],{"class":95},[14,288,289,290,292],{},"If the condition is false, Python raises ",[17,291,19],{}," with the message.",[33,294,296],{"id":295},"example-that-causes-assertionerror","Example that causes AssertionError",[14,298,299],{},"Here is a simple example:",[38,301,303],{"className":40,"code":302,"language":42,"meta":43,"style":43},"number = -5\nassert number > 0, \"number must be positive\"\n",[17,304,305,318],{"__ignoreMap":43},[47,306,307,310,312,315],{"class":49,"line":50},[47,308,309],{"class":53},"number ",[47,311,58],{"class":57},[47,313,314],{"class":57}," -",[47,316,317],{"class":61},"5\n",[47,319,320,322,325,328,331,333,335,338],{"class":49,"line":65},[47,321,23],{"class":68},[47,323,324],{"class":53}," number ",[47,326,327],{"class":57},">",[47,329,330],{"class":61}," 0",[47,332,108],{"class":107},[47,334,111],{"class":95},[47,336,337],{"class":114},"number must be positive",[47,339,118],{"class":95},[14,341,342],{},"Output:",[38,344,346],{"className":40,"code":345,"language":42,"meta":43,"style":43},"Traceback (most recent call last):\n  File \"example.py\", line 2, in \u003Cmodule>\n    assert number > 0, \"number must be positive\"\nAssertionError: number must be positive\n",[17,347,348,363,398,417],{"__ignoreMap":43},[47,349,350,354,357,360],{"class":49,"line":50},[47,351,353],{"class":352},"slqww","Traceback ",[47,355,356],{"class":107},"(",[47,358,359],{"class":352},"most recent call last",[47,361,362],{"class":107},"):\n",[47,364,365,368,371,374,376,378,381,384,386,389,392,395],{"class":49,"line":65},[47,366,367],{"class":53},"  File ",[47,369,370],{"class":95},"\"",[47,372,373],{"class":114},"example.py",[47,375,370],{"class":95},[47,377,108],{"class":107},[47,379,380],{"class":53}," line ",[47,382,383],{"class":61},"2",[47,385,108],{"class":107},[47,387,388],{"class":57}," in",[47,390,391],{"class":57}," \u003C",[47,393,394],{"class":53},"module",[47,396,397],{"class":57},">\n",[47,399,400,403,405,407,409,411,413,415],{"class":49,"line":80},[47,401,402],{"class":68},"    assert",[47,404,324],{"class":53},[47,406,327],{"class":57},[47,408,330],{"class":61},[47,410,108],{"class":107},[47,412,111],{"class":95},[47,414,337],{"class":114},[47,416,118],{"class":95},[47,418,419,422,425],{"class":49,"line":87},[47,420,19],{"class":421},"sZMiF",[47,423,424],{"class":107},":",[47,426,427],{"class":53}," number must be positive\n",[14,429,430],{},"Why did this fail?",[130,432,433,439,449],{},[133,434,435,436],{},"The condition is ",[17,437,438],{},"number > 0",[133,440,441,442,445,446],{},"The value of ",[17,443,444],{},"number"," is ",[17,447,448],{},"-5",[133,450,451,445,454],{},[17,452,453],{},"-5 > 0",[17,455,27],{},[14,457,458,459,28],{},"So Python raises ",[17,460,19],{},[14,462,463],{},"Here is the same idea without a message:",[38,465,467],{"className":40,"code":466,"language":42,"meta":43,"style":43},"number = -5\nassert number > 0\n",[17,468,469,479],{"__ignoreMap":43},[47,470,471,473,475,477],{"class":49,"line":50},[47,472,309],{"class":53},[47,474,58],{"class":57},[47,476,314],{"class":57},[47,478,317],{"class":61},[47,480,481,483,485,487],{"class":49,"line":65},[47,482,23],{"class":68},[47,484,324],{"class":53},[47,486,327],{"class":57},[47,488,489],{"class":61}," 0\n",[14,491,342],{},[38,493,495],{"className":40,"code":494,"language":42,"meta":43,"style":43},"Traceback (most recent call last):\n  File \"example.py\", line 2, in \u003Cmodule>\n    assert number > 0\nAssertionError\n",[17,496,497,507,533,543],{"__ignoreMap":43},[47,498,499,501,503,505],{"class":49,"line":50},[47,500,353],{"class":352},[47,502,356],{"class":107},[47,504,359],{"class":352},[47,506,362],{"class":107},[47,508,509,511,513,515,517,519,521,523,525,527,529,531],{"class":49,"line":65},[47,510,367],{"class":53},[47,512,370],{"class":95},[47,514,373],{"class":114},[47,516,370],{"class":95},[47,518,108],{"class":107},[47,520,380],{"class":53},[47,522,383],{"class":61},[47,524,108],{"class":107},[47,526,388],{"class":57},[47,528,391],{"class":57},[47,530,394],{"class":53},[47,532,397],{"class":57},[47,534,535,537,539,541],{"class":49,"line":80},[47,536,402],{"class":68},[47,538,324],{"class":53},[47,540,327],{"class":57},[47,542,489],{"class":61},[47,544,545],{"class":49,"line":87},[47,546,547],{"class":421},"AssertionError\n",[14,549,550],{},"This works, but it is harder to debug because the error gives less information.",[33,552,554],{"id":553},"common-causes","Common causes",[14,556,557,559],{},[17,558,19],{}," usually happens for one of these reasons:",[130,561,562,569,572,575,578,583],{},[133,563,172,564,566,567],{},[17,565,23],{}," condition evaluates to ",[17,568,27],{},[133,570,571],{},"Unexpected input was passed to a function",[133,573,574],{},"A variable has the wrong value because of earlier code",[133,576,577],{},"The code made an assumption that is not always true",[133,579,580,582],{},[17,581,23],{}," was used for user input validation",[133,584,585],{},"No custom message was added, so the error is harder to understand",[14,587,588],{},"Example of a variable changing earlier in the program:",[38,590,592],{"className":40,"code":591,"language":42,"meta":43,"style":43},"count = 10\ncount = count - 15\n\nassert count >= 0, \"count should not be negative\"\n",[17,593,594,604,619,623],{"__ignoreMap":43},[47,595,596,599,601],{"class":49,"line":50},[47,597,598],{"class":53},"count ",[47,600,58],{"class":57},[47,602,603],{"class":61}," 10\n",[47,605,606,608,610,613,616],{"class":49,"line":65},[47,607,598],{"class":53},[47,609,58],{"class":57},[47,611,612],{"class":53}," count ",[47,614,615],{"class":57},"-",[47,617,618],{"class":61}," 15\n",[47,620,621],{"class":49,"line":80},[47,622,84],{"emptyLinePlaceholder":83},[47,624,625,627,629,631,633,635,637,640],{"class":49,"line":87},[47,626,23],{"class":68},[47,628,612],{"class":53},[47,630,74],{"class":57},[47,632,330],{"class":61},[47,634,108],{"class":107},[47,636,111],{"class":95},[47,638,639],{"class":114},"count should not be negative",[47,641,118],{"class":95},[14,643,644,645,647],{},"The real problem may be earlier in the code, not on the ",[17,646,23],{}," line itself.",[33,649,651],{"id":650},"how-to-fix-assertionerror","How to fix AssertionError",[14,653,654],{},"Start by checking the exact condition that failed.",[656,657,659],"h3",{"id":658},"_1-check-the-assert-condition","1. Check the assert condition",[14,661,662],{},"Make sure the condition matches what you really want to test.",[38,664,666],{"className":40,"code":665,"language":42,"meta":43,"style":43},"score = 0\nassert score >= 0, \"score must not be negative\"\n",[17,667,668,677],{"__ignoreMap":43},[47,669,670,673,675],{"class":49,"line":50},[47,671,672],{"class":53},"score ",[47,674,58],{"class":57},[47,676,489],{"class":61},[47,678,679,681,684,686,688,690,692,695],{"class":49,"line":65},[47,680,23],{"class":68},[47,682,683],{"class":53}," score ",[47,685,74],{"class":57},[47,687,330],{"class":61},[47,689,108],{"class":107},[47,691,111],{"class":95},[47,693,694],{"class":114},"score must not be negative",[47,696,118],{"class":95},[14,698,699,700,703],{},"This assertion is fine if ",[17,701,702],{},"0"," is allowed.",[14,705,706],{},"But if you wrote this by mistake:",[38,708,710],{"className":40,"code":709,"language":42,"meta":43,"style":43},"score = 0\nassert score > 0, \"score must be positive\"\n",[17,711,712,720],{"__ignoreMap":43},[47,713,714,716,718],{"class":49,"line":50},[47,715,672],{"class":53},[47,717,58],{"class":57},[47,719,489],{"class":61},[47,721,722,724,726,728,730,732,734,737],{"class":49,"line":65},[47,723,23],{"class":68},[47,725,683],{"class":53},[47,727,327],{"class":57},[47,729,330],{"class":61},[47,731,108],{"class":107},[47,733,111],{"class":95},[47,735,736],{"class":114},"score must be positive",[47,738,118],{"class":95},[14,740,741,742,744],{},"then ",[17,743,702],{}," will fail even if it should be valid.",[656,746,748],{"id":747},"_2-print-values-before-the-failing-line","2. Print values before the failing line",[14,750,751],{},"If you are not sure why the assertion failed, print the values first.",[38,753,755],{"className":40,"code":754,"language":42,"meta":43,"style":43},"number = -5\nprint(number)\nprint(number > 0)\n\nassert number > 0, \"number must be positive\"\n",[17,756,757,767,780,794,798],{"__ignoreMap":43},[47,758,759,761,763,765],{"class":49,"line":50},[47,760,309],{"class":53},[47,762,58],{"class":57},[47,764,314],{"class":57},[47,766,317],{"class":61},[47,768,769,773,775,777],{"class":49,"line":65},[47,770,772],{"class":771},"sptTA","print",[47,774,356],{"class":107},[47,776,444],{"class":352},[47,778,779],{"class":107},")\n",[47,781,782,784,786,788,790,792],{"class":49,"line":80},[47,783,772],{"class":771},[47,785,356],{"class":107},[47,787,309],{"class":352},[47,789,327],{"class":57},[47,791,330],{"class":61},[47,793,779],{"class":107},[47,795,796],{"class":49,"line":87},[47,797,84],{"emptyLinePlaceholder":83},[47,799,800,802,804,806,808,810,812,814],{"class":49,"line":99},[47,801,23],{"class":68},[47,803,324],{"class":53},[47,805,327],{"class":57},[47,807,330],{"class":61},[47,809,108],{"class":107},[47,811,111],{"class":95},[47,813,337],{"class":114},[47,815,118],{"class":95},[14,817,342],{},[38,819,821],{"className":40,"code":820,"language":42,"meta":43,"style":43},"-5\nFalse\nTraceback (most recent call last):\n...\nAssertionError: number must be positive\n",[17,822,823,829,835,845,851],{"__ignoreMap":43},[47,824,825,827],{"class":49,"line":50},[47,826,615],{"class":57},[47,828,317],{"class":61},[47,830,831],{"class":49,"line":65},[47,832,834],{"class":833},"s39Yj","False\n",[47,836,837,839,841,843],{"class":49,"line":80},[47,838,353],{"class":352},[47,840,356],{"class":107},[47,842,359],{"class":352},[47,844,362],{"class":107},[47,846,847],{"class":49,"line":87},[47,848,850],{"class":849},"s_hVV","...\n",[47,852,853,855,857],{"class":49,"line":99},[47,854,19],{"class":421},[47,856,424],{"class":107},[47,858,427],{"class":53},[14,860,861],{},"Useful debugging commands include:",[38,863,865],{"className":40,"code":864,"language":42,"meta":43,"style":43},"print(value)\nprint(type(value))\nprint(condition_result)\nhelp(assert)\npython your_script.py\n",[17,866,867,878,894,905,916],{"__ignoreMap":43},[47,868,869,871,873,876],{"class":49,"line":50},[47,870,772],{"class":771},[47,872,356],{"class":107},[47,874,875],{"class":352},"value",[47,877,779],{"class":107},[47,879,880,882,884,887,889,891],{"class":49,"line":65},[47,881,772],{"class":771},[47,883,356],{"class":107},[47,885,886],{"class":421},"type",[47,888,356],{"class":107},[47,890,875],{"class":352},[47,892,893],{"class":107},"))\n",[47,895,896,898,900,903],{"class":49,"line":80},[47,897,772],{"class":771},[47,899,356],{"class":107},[47,901,902],{"class":352},"condition_result",[47,904,779],{"class":107},[47,906,907,910,912,914],{"class":49,"line":87},[47,908,909],{"class":771},"help",[47,911,356],{"class":107},[47,913,23],{"class":68},[47,915,779],{"class":107},[47,917,918,921,923],{"class":49,"line":99},[47,919,920],{"class":53},"python your_script",[47,922,28],{"class":107},[47,924,926],{"class":925},"skxfh","py\n",[656,928,930],{"id":929},"_3-make-sure-the-data-is-valid","3. Make sure the data is valid",[14,932,933],{},"If a function expects a certain kind of input, check what you passed into it.",[38,935,937],{"className":40,"code":936,"language":42,"meta":43,"style":43},"def divide_total(total, people):\n    assert people > 0, \"people must be greater than 0\"\n    return total \u002F people\n\nprint(divide_total(100, 4))\n",[17,938,939,962,982,996,1000],{"__ignoreMap":43},[47,940,941,945,949,951,955,957,960],{"class":49,"line":50},[47,942,944],{"class":943},"sbsja","def",[47,946,948],{"class":947},"sGLFI"," divide_total",[47,950,356],{"class":107},[47,952,954],{"class":953},"sFwrP","total",[47,956,108],{"class":107},[47,958,959],{"class":953}," people",[47,961,362],{"class":107},[47,963,964,966,969,971,973,975,977,980],{"class":49,"line":65},[47,965,402],{"class":68},[47,967,968],{"class":53}," people ",[47,970,327],{"class":57},[47,972,330],{"class":61},[47,974,108],{"class":107},[47,976,111],{"class":95},[47,978,979],{"class":114},"people must be greater than 0",[47,981,118],{"class":95},[47,983,984,987,990,993],{"class":49,"line":80},[47,985,986],{"class":68},"    return",[47,988,989],{"class":53}," total ",[47,991,992],{"class":57},"\u002F",[47,994,995],{"class":53}," people\n",[47,997,998],{"class":49,"line":87},[47,999,84],{"emptyLinePlaceholder":83},[47,1001,1002,1004,1006,1009,1011,1014,1016,1019],{"class":49,"line":99},[47,1003,772],{"class":771},[47,1005,356],{"class":107},[47,1007,1008],{"class":352},"divide_total",[47,1010,356],{"class":107},[47,1012,1013],{"class":61},"100",[47,1015,108],{"class":107},[47,1017,1018],{"class":61}," 4",[47,1020,893],{"class":107},[14,1022,1023],{},"This works.",[14,1025,1026],{},"But this will fail:",[38,1028,1030],{"className":40,"code":1029,"language":42,"meta":43,"style":43},"def divide_total(total, people):\n    assert people > 0, \"people must be greater than 0\"\n    return total \u002F people\n\nprint(divide_total(100, 0))\n",[17,1031,1032,1048,1066,1076,1080],{"__ignoreMap":43},[47,1033,1034,1036,1038,1040,1042,1044,1046],{"class":49,"line":50},[47,1035,944],{"class":943},[47,1037,948],{"class":947},[47,1039,356],{"class":107},[47,1041,954],{"class":953},[47,1043,108],{"class":107},[47,1045,959],{"class":953},[47,1047,362],{"class":107},[47,1049,1050,1052,1054,1056,1058,1060,1062,1064],{"class":49,"line":65},[47,1051,402],{"class":68},[47,1053,968],{"class":53},[47,1055,327],{"class":57},[47,1057,330],{"class":61},[47,1059,108],{"class":107},[47,1061,111],{"class":95},[47,1063,979],{"class":114},[47,1065,118],{"class":95},[47,1067,1068,1070,1072,1074],{"class":49,"line":80},[47,1069,986],{"class":68},[47,1071,989],{"class":53},[47,1073,992],{"class":57},[47,1075,995],{"class":53},[47,1077,1078],{"class":49,"line":87},[47,1079,84],{"emptyLinePlaceholder":83},[47,1081,1082,1084,1086,1088,1090,1092,1094,1096],{"class":49,"line":99},[47,1083,772],{"class":771},[47,1085,356],{"class":107},[47,1087,1008],{"class":352},[47,1089,356],{"class":107},[47,1091,1013],{"class":61},[47,1093,108],{"class":107},[47,1095,330],{"class":61},[47,1097,893],{"class":107},[14,1099,1100],{},"The fix is to pass a valid value, or change the function so it handles invalid input more clearly.",[656,1102,1104],{"id":1103},"_4-add-a-helpful-message","4. Add a helpful message",[14,1106,1107],{},"A good message makes debugging much faster.",[14,1109,1110],{},"Less helpful:",[38,1112,1114],{"className":40,"code":1113,"language":42,"meta":43,"style":43},"username = \"\"\nassert username\n",[17,1115,1116,1125],{"__ignoreMap":43},[47,1117,1118,1121,1123],{"class":49,"line":50},[47,1119,1120],{"class":53},"username ",[47,1122,58],{"class":57},[47,1124,96],{"class":95},[47,1126,1127,1129],{"class":49,"line":65},[47,1128,23],{"class":68},[47,1130,1131],{"class":53}," username\n",[14,1133,1134],{},"More helpful:",[38,1136,1138],{"className":40,"code":1137,"language":42,"meta":43,"style":43},"username = \"\"\nassert username, \"username must not be empty\"\n",[17,1139,1140,1148],{"__ignoreMap":43},[47,1141,1142,1144,1146],{"class":49,"line":50},[47,1143,1120],{"class":53},[47,1145,58],{"class":57},[47,1147,96],{"class":95},[47,1149,1150,1152,1155,1157,1159,1162],{"class":49,"line":65},[47,1151,23],{"class":68},[47,1153,1154],{"class":53}," username",[47,1156,108],{"class":107},[47,1158,111],{"class":95},[47,1160,1161],{"class":114},"username must not be empty",[47,1163,118],{"class":95},[656,1165,1167,1168,1171],{"id":1166},"_5-use-if-and-raise-a-normal-exception-for-user-input","5. Use ",[17,1169,1170],{},"if"," and raise a normal exception for user input",[14,1173,1174,1175,1177],{},"If you are validating normal input from a user, ",[17,1176,23],{}," is usually not the best tool.",[14,1179,1180,1181,1183,1184,28],{},"Use an ",[17,1182,1170],{}," statement and raise a clear exception instead. See also ",[154,1185,1187],{"href":1186},"\u002Fhow-to\u002Fhow-to-raise-an-exception-in-python\u002F","how to raise an exception in Python",[38,1189,1191],{"className":40,"code":1190,"language":42,"meta":43,"style":43},"def set_age(age):\n    if age \u003C 0:\n        raise ValueError(\"age cannot be negative\")\n    return age\n",[17,1192,1193,1207,1222,1241],{"__ignoreMap":43},[47,1194,1195,1197,1200,1202,1205],{"class":49,"line":50},[47,1196,944],{"class":943},[47,1198,1199],{"class":947}," set_age",[47,1201,356],{"class":107},[47,1203,1204],{"class":953},"age",[47,1206,362],{"class":107},[47,1208,1209,1212,1214,1217,1219],{"class":49,"line":65},[47,1210,1211],{"class":68},"    if",[47,1213,71],{"class":53},[47,1215,1216],{"class":57},"\u003C",[47,1218,330],{"class":61},[47,1220,1221],{"class":107},":\n",[47,1223,1224,1227,1230,1232,1234,1237,1239],{"class":49,"line":80},[47,1225,1226],{"class":68},"        raise",[47,1228,1229],{"class":421}," ValueError",[47,1231,356],{"class":107},[47,1233,370],{"class":95},[47,1235,1236],{"class":114},"age cannot be negative",[47,1238,370],{"class":95},[47,1240,779],{"class":107},[47,1242,1243,1245],{"class":49,"line":87},[47,1244,986],{"class":68},[47,1246,1247],{"class":53}," age\n",[14,1249,1250,1251,1253],{},"This is clearer than using ",[17,1252,23],{}," for ordinary bad input.",[14,1255,1256,1257,28],{},"If you want to handle errors without stopping the whole program, read ",[154,1258,1260],{"href":1259},"\u002Fhow-to\u002Fhow-to-handle-exceptions-in-python\u002F","how to handle exceptions in Python",[33,1262,1264],{"id":1263},"assertionerror-in-functions","AssertionError in functions",[14,1266,1267,1268,1270],{},"A function may use ",[17,1269,23],{}," to check assumptions about its inputs.",[14,1272,252],{},[38,1274,1276],{"className":40,"code":1275,"language":42,"meta":43,"style":43},"def greet(name):\n    assert isinstance(name, str), \"name must be a string\"\n    return \"Hello, \" + name\n\nprint(greet(\"Maya\"))\n",[17,1277,1278,1292,1318,1335,1339],{"__ignoreMap":43},[47,1279,1280,1282,1285,1287,1290],{"class":49,"line":50},[47,1281,944],{"class":943},[47,1283,1284],{"class":947}," greet",[47,1286,356],{"class":107},[47,1288,1289],{"class":953},"name",[47,1291,362],{"class":107},[47,1293,1294,1296,1299,1301,1303,1305,1308,1311,1313,1316],{"class":49,"line":65},[47,1295,402],{"class":68},[47,1297,1298],{"class":771}," isinstance",[47,1300,356],{"class":107},[47,1302,1289],{"class":352},[47,1304,108],{"class":107},[47,1306,1307],{"class":421}," str",[47,1309,1310],{"class":107},"),",[47,1312,111],{"class":95},[47,1314,1315],{"class":114},"name must be a string",[47,1317,118],{"class":95},[47,1319,1320,1322,1324,1327,1329,1332],{"class":49,"line":80},[47,1321,986],{"class":68},[47,1323,111],{"class":95},[47,1325,1326],{"class":114},"Hello, ",[47,1328,370],{"class":95},[47,1330,1331],{"class":57}," +",[47,1333,1334],{"class":53}," name\n",[47,1336,1337],{"class":49,"line":87},[47,1338,84],{"emptyLinePlaceholder":83},[47,1340,1341,1343,1345,1348,1350,1352,1355,1357],{"class":49,"line":99},[47,1342,772],{"class":771},[47,1344,356],{"class":107},[47,1346,1347],{"class":352},"greet",[47,1349,356],{"class":107},[47,1351,370],{"class":95},[47,1353,1354],{"class":114},"Maya",[47,1356,370],{"class":95},[47,1358,893],{"class":107},[14,1360,1361,1362,1365],{},"This works because ",[17,1363,1364],{},"\"Maya\""," is a string.",[14,1367,1368],{},"But this fails:",[38,1370,1372],{"className":40,"code":1371,"language":42,"meta":43,"style":43},"def greet(name):\n    assert isinstance(name, str), \"name must be a string\"\n    return \"Hello, \" + name\n\nprint(greet(123))\n",[17,1373,1374,1386,1408,1422,1426],{"__ignoreMap":43},[47,1375,1376,1378,1380,1382,1384],{"class":49,"line":50},[47,1377,944],{"class":943},[47,1379,1284],{"class":947},[47,1381,356],{"class":107},[47,1383,1289],{"class":953},[47,1385,362],{"class":107},[47,1387,1388,1390,1392,1394,1396,1398,1400,1402,1404,1406],{"class":49,"line":65},[47,1389,402],{"class":68},[47,1391,1298],{"class":771},[47,1393,356],{"class":107},[47,1395,1289],{"class":352},[47,1397,108],{"class":107},[47,1399,1307],{"class":421},[47,1401,1310],{"class":107},[47,1403,111],{"class":95},[47,1405,1315],{"class":114},[47,1407,118],{"class":95},[47,1409,1410,1412,1414,1416,1418,1420],{"class":49,"line":80},[47,1411,986],{"class":68},[47,1413,111],{"class":95},[47,1415,1326],{"class":114},[47,1417,370],{"class":95},[47,1419,1331],{"class":57},[47,1421,1334],{"class":53},[47,1423,1424],{"class":49,"line":87},[47,1425,84],{"emptyLinePlaceholder":83},[47,1427,1428,1430,1432,1434,1436,1439],{"class":49,"line":99},[47,1429,772],{"class":771},[47,1431,356],{"class":107},[47,1433,1347],{"class":352},[47,1435,356],{"class":107},[47,1437,1438],{"class":61},"123",[47,1440,893],{"class":107},[14,1442,342],{},[38,1444,1446],{"className":40,"code":1445,"language":42,"meta":43,"style":43},"Traceback (most recent call last):\n...\nAssertionError: name must be a string\n",[17,1447,1448,1458,1462],{"__ignoreMap":43},[47,1449,1450,1452,1454,1456],{"class":49,"line":50},[47,1451,353],{"class":352},[47,1453,356],{"class":107},[47,1455,359],{"class":352},[47,1457,362],{"class":107},[47,1459,1460],{"class":49,"line":65},[47,1461,850],{"class":849},[47,1463,1464,1466,1468],{"class":49,"line":80},[47,1465,19],{"class":421},[47,1467,424],{"class":107},[47,1469,1470],{"class":53}," name must be a string\n",[14,1472,1473],{},"This can be useful when a function should only be called in a certain way.",[14,1475,1476],{},"But there is an important idea here:",[130,1478,1479,1484],{},[133,1480,1481,1483],{},[17,1482,23],{}," checks programmer assumptions",[133,1485,1486],{},"It is not the same as handling normal user mistakes",[14,1488,1489],{},"If a user might enter bad data, explicit exceptions are usually better.",[33,1491,1493],{"id":1492},"assert-vs-raising-an-exception-yourself","assert vs raising an exception yourself",[14,1495,1496,1497,1499,1500,28],{},"It helps to know when to use ",[17,1498,23],{}," and when to use ",[17,1501,1502],{},"raise",[656,1504,1506,1507,1509],{"id":1505},"use-assert-when","Use ",[17,1508,23],{}," when:",[130,1511,1512,1515,1518],{},[133,1513,1514],{},"You are checking an internal assumption",[133,1516,1517],{},"You are debugging code",[133,1519,1520],{},"You want to fail early if something impossible happened",[14,1522,252],{},[38,1524,1526],{"className":40,"code":1525,"language":42,"meta":43,"style":43},"items = [1, 2, 3]\nindex = 1\n\nassert 0 \u003C= index \u003C len(items), \"index should be within list bounds\"\nprint(items[index])\n",[17,1527,1528,1554,1564,1568,1599],{"__ignoreMap":43},[47,1529,1530,1533,1535,1538,1541,1543,1546,1548,1551],{"class":49,"line":50},[47,1531,1532],{"class":53},"items ",[47,1534,58],{"class":57},[47,1536,1537],{"class":107}," [",[47,1539,1540],{"class":61},"1",[47,1542,108],{"class":107},[47,1544,1545],{"class":61}," 2",[47,1547,108],{"class":107},[47,1549,1550],{"class":61}," 3",[47,1552,1553],{"class":107},"]\n",[47,1555,1556,1559,1561],{"class":49,"line":65},[47,1557,1558],{"class":53},"index ",[47,1560,58],{"class":57},[47,1562,1563],{"class":61}," 1\n",[47,1565,1566],{"class":49,"line":80},[47,1567,84],{"emptyLinePlaceholder":83},[47,1569,1570,1572,1574,1577,1580,1582,1585,1587,1590,1592,1594,1597],{"class":49,"line":87},[47,1571,23],{"class":68},[47,1573,330],{"class":61},[47,1575,1576],{"class":57}," \u003C=",[47,1578,1579],{"class":53}," index ",[47,1581,1216],{"class":57},[47,1583,1584],{"class":771}," len",[47,1586,356],{"class":107},[47,1588,1589],{"class":352},"items",[47,1591,1310],{"class":107},[47,1593,111],{"class":95},[47,1595,1596],{"class":114},"index should be within list bounds",[47,1598,118],{"class":95},[47,1600,1601,1603,1605,1607,1610,1613],{"class":49,"line":99},[47,1602,772],{"class":771},[47,1604,356],{"class":107},[47,1606,1589],{"class":352},[47,1608,1609],{"class":107},"[",[47,1611,1612],{"class":352},"index",[47,1614,1615],{"class":107},"])\n",[656,1617,1506,1619,1622,1623,1509],{"id":1618},"use-raise-valueerror-or-raise-typeerror-when",[17,1620,1621],{},"raise ValueError"," or ",[17,1624,1625],{},"raise TypeError",[130,1627,1628,1631,1634],{},[133,1629,1630],{},"A user gives bad input",[133,1632,1633],{},"A function argument is invalid",[133,1635,1636],{},"You want a clear, intentional error in production code",[14,1638,252],{},[38,1640,1642],{"className":40,"code":1641,"language":42,"meta":43,"style":43},"def calculate_discount(price):\n    if price \u003C 0:\n        raise ValueError(\"price cannot be negative\")\n    return price * 0.9\n",[17,1643,1644,1658,1671,1688],{"__ignoreMap":43},[47,1645,1646,1648,1651,1653,1656],{"class":49,"line":50},[47,1647,944],{"class":943},[47,1649,1650],{"class":947}," calculate_discount",[47,1652,356],{"class":107},[47,1654,1655],{"class":953},"price",[47,1657,362],{"class":107},[47,1659,1660,1662,1665,1667,1669],{"class":49,"line":65},[47,1661,1211],{"class":68},[47,1663,1664],{"class":53}," price ",[47,1666,1216],{"class":57},[47,1668,330],{"class":61},[47,1670,1221],{"class":107},[47,1672,1673,1675,1677,1679,1681,1684,1686],{"class":49,"line":80},[47,1674,1226],{"class":68},[47,1676,1229],{"class":421},[47,1678,356],{"class":107},[47,1680,370],{"class":95},[47,1682,1683],{"class":114},"price cannot be negative",[47,1685,370],{"class":95},[47,1687,779],{"class":107},[47,1689,1690,1692,1694,1697],{"class":49,"line":87},[47,1691,986],{"class":68},[47,1693,1664],{"class":53},[47,1695,1696],{"class":57},"*",[47,1698,1699],{"class":61}," 0.9\n",[14,1701,1702],{},"This is usually easier to understand than an assertion for user input.",[14,1704,1705,1706,1710,1711,28],{},"For more on related exception types, compare this with ",[154,1707,1709],{"href":1708},"\u002Ferrors\u002Fvalueerror-in-python-causes-and-fixes\u002F","ValueError in Python: causes and fixes"," and ",[154,1712,1714],{"href":1713},"\u002Ferrors\u002Ftypeerror-vs-valueerror-in-python-explained\u002F","TypeError vs ValueError in Python explained",[33,1716,1718],{"id":1717},"debugging-steps","Debugging steps",[14,1720,1721,1722,1724],{},"When you see ",[17,1723,19],{},", follow these steps:",[1726,1727,1728,1731,1737,1742,1745,1748],"ol",{},[133,1729,1730],{},"Read the traceback carefully",[133,1732,1733,1734,1736],{},"Find the exact ",[17,1735,23],{}," line that failed",[133,1738,1739,1740],{},"Look at the condition inside the ",[17,1741,23],{},[133,1743,1744],{},"Check the values used in that condition",[133,1746,1747],{},"Print variables before the failing line",[133,1749,1750],{},"Test with small known values",[14,1752,252],{},[38,1754,1756],{"className":40,"code":1755,"language":42,"meta":43,"style":43},"value = \"10\"\n\nprint(value)\nprint(type(value))\nprint(value.isdigit())\n\nassert isinstance(value, int), \"value must be an integer\"\n",[17,1757,1758,1772,1776,1786,1800,1816,1821],{"__ignoreMap":43},[47,1759,1760,1763,1765,1767,1770],{"class":49,"line":50},[47,1761,1762],{"class":53},"value ",[47,1764,58],{"class":57},[47,1766,111],{"class":95},[47,1768,1769],{"class":114},"10",[47,1771,118],{"class":95},[47,1773,1774],{"class":49,"line":65},[47,1775,84],{"emptyLinePlaceholder":83},[47,1777,1778,1780,1782,1784],{"class":49,"line":80},[47,1779,772],{"class":771},[47,1781,356],{"class":107},[47,1783,875],{"class":352},[47,1785,779],{"class":107},[47,1787,1788,1790,1792,1794,1796,1798],{"class":49,"line":87},[47,1789,772],{"class":771},[47,1791,356],{"class":107},[47,1793,886],{"class":421},[47,1795,356],{"class":107},[47,1797,875],{"class":352},[47,1799,893],{"class":107},[47,1801,1802,1804,1806,1808,1810,1813],{"class":49,"line":99},[47,1803,772],{"class":771},[47,1805,356],{"class":107},[47,1807,875],{"class":352},[47,1809,28],{"class":107},[47,1811,1812],{"class":352},"isdigit",[47,1814,1815],{"class":107},"())\n",[47,1817,1819],{"class":49,"line":1818},6,[47,1820,84],{"emptyLinePlaceholder":83},[47,1822,1824,1826,1828,1830,1832,1834,1837,1839,1841,1844],{"class":49,"line":1823},7,[47,1825,23],{"class":68},[47,1827,1298],{"class":771},[47,1829,356],{"class":107},[47,1831,875],{"class":352},[47,1833,108],{"class":107},[47,1835,1836],{"class":421}," int",[47,1838,1310],{"class":107},[47,1840,111],{"class":95},[47,1842,1843],{"class":114},"value must be an integer",[47,1845,118],{"class":95},[14,1847,342],{},[38,1849,1851],{"className":40,"code":1850,"language":42,"meta":43,"style":43},"10\n\u003Cclass 'str'>\nTrue\nTraceback (most recent call last):\n...\nAssertionError: value must be an integer\n",[17,1852,1853,1858,1876,1881,1891,1895],{"__ignoreMap":43},[47,1854,1855],{"class":49,"line":50},[47,1856,1857],{"class":61},"10\n",[47,1859,1860,1862,1865,1868,1871,1874],{"class":49,"line":65},[47,1861,1216],{"class":57},[47,1863,1864],{"class":943},"class",[47,1866,1867],{"class":95}," '",[47,1869,1870],{"class":114},"str",[47,1872,1873],{"class":95},"'",[47,1875,397],{"class":57},[47,1877,1878],{"class":49,"line":80},[47,1879,1880],{"class":833},"True\n",[47,1882,1883,1885,1887,1889],{"class":49,"line":87},[47,1884,353],{"class":352},[47,1886,356],{"class":107},[47,1888,359],{"class":352},[47,1890,362],{"class":107},[47,1892,1893],{"class":49,"line":99},[47,1894,850],{"class":849},[47,1896,1897,1899,1901],{"class":49,"line":1818},[47,1898,19],{"class":421},[47,1900,424],{"class":107},[47,1902,1903],{"class":53}," value must be an integer\n",[14,1905,1906],{},"This tells you the problem is not the number itself. The problem is that the value is a string, not an integer.",[33,1908,1910],{"id":1909},"related-errors-and-confusion-points","Related errors and confusion points",[14,1912,1913,1914,1916],{},"Beginners often confuse ",[17,1915,19],{}," with other errors.",[656,1918,1920],{"id":1919},"assertionerror-vs-valueerror","AssertionError vs ValueError",[130,1922,1923,1928],{},[133,1924,1925,1927],{},[17,1926,19],{}," means an assertion failed",[133,1929,1930,1933],{},[17,1931,1932],{},"ValueError"," means the value has the right type, but the value is not acceptable",[14,1935,1936,1937,424],{},"Example of ",[17,1938,1932],{},[38,1940,1942],{"className":40,"code":1941,"language":42,"meta":43,"style":43},"int(\"hello\")\n",[17,1943,1944],{"__ignoreMap":43},[47,1945,1946,1949,1951,1953,1956,1958],{"class":49,"line":50},[47,1947,1948],{"class":421},"int",[47,1950,356],{"class":107},[47,1952,370],{"class":95},[47,1954,1955],{"class":114},"hello",[47,1957,370],{"class":95},[47,1959,779],{"class":107},[14,1961,1962,1963,1965,1966,1969],{},"This raises ",[17,1964,1932],{}," because ",[17,1967,1968],{},"\"hello\""," cannot be converted to an integer.",[656,1971,1973],{"id":1972},"assertionerror-vs-typeerror","AssertionError vs TypeError",[130,1975,1976,1983],{},[133,1977,1978,1980,1981],{},[17,1979,19],{}," comes from a failed ",[17,1982,23],{},[133,1984,1985,1988],{},[17,1986,1987],{},"TypeError"," happens when an operation uses the wrong type",[14,1990,1936,1991,424],{},[17,1992,1987],{},[38,1994,1996],{"className":40,"code":1995,"language":42,"meta":43,"style":43},"\"5\" + 2\n",[17,1997,1998],{"__ignoreMap":43},[47,1999,2000,2003,2007,2009,2011],{"class":49,"line":50},[47,2001,370],{"class":2002},"s2W-s",[47,2004,2006],{"class":2005},"sithA","5",[47,2008,370],{"class":2002},[47,2010,1331],{"class":57},[47,2012,2013],{"class":61}," 2\n",[14,2015,2016],{},"This fails because Python cannot add a string and an integer together.",[656,2018,2020],{"id":2019},"assertionerror-vs-syntax-errors","AssertionError vs syntax errors",[14,2022,2023],{},"A syntax error means the code itself is written incorrectly.",[14,2025,252],{},[38,2027,2029],{"className":40,"code":2028,"language":42,"meta":43,"style":43},"if True\n    print(\"hello\")\n",[17,2030,2031,2038],{"__ignoreMap":43},[47,2032,2033,2035],{"class":49,"line":50},[47,2034,1170],{"class":68},[47,2036,2037],{"class":833}," True\n",[47,2039,2040,2043,2045,2047,2049,2051],{"class":49,"line":65},[47,2041,2042],{"class":771},"    print",[47,2044,356],{"class":107},[47,2046,370],{"class":95},[47,2048,1955],{"class":114},[47,2050,370],{"class":95},[47,2052,779],{"class":107},[14,2054,2055,2056,2058],{},"That is different from ",[17,2057,19],{},", which happens when the code runs and a condition is false.",[33,2060,2062],{"id":2061},"faq","FAQ",[656,2064,2066],{"id":2065},"what-causes-assertionerror-in-python","What causes AssertionError in Python?",[14,2068,2069,2070,24,2072,28],{},"It happens when an ",[17,2071,23],{},[17,2073,27],{},[656,2075,2077],{"id":2076},"how-do-i-fix-assertionerror","How do I fix AssertionError?",[14,2079,2080,2081,2083],{},"Check the ",[17,2082,23],{}," condition, inspect the values used in it, and make sure your program data matches what the code expects.",[656,2085,2087],{"id":2086},"should-i-use-assert-for-user-input-validation","Should I use assert for user input validation?",[14,2089,2090,2091,2093,2094,2096],{},"Usually no. For user input, use normal checks with ",[17,2092,1170],{}," statements and raise exceptions like ",[17,2095,1932],{}," when needed.",[656,2098,2100],{"id":2099},"what-is-the-difference-between-assertionerror-and-valueerror","What is the difference between AssertionError and ValueError?",[14,2102,2103,2105,2106,2108],{},[17,2104,19],{}," means an internal check failed. ",[17,2107,1932],{}," usually means a value is the right type but not acceptable.",[33,2110,2112],{"id":2111},"see-also","See also",[130,2114,2115,2119,2124,2129,2133],{},[133,2116,2117],{},[154,2118,157],{"href":156},[133,2120,2121],{},[154,2122,2123],{"href":1259},"How to handle exceptions in Python",[133,2125,2126],{},[154,2127,2128],{"href":1186},"How to raise an exception in Python",[133,2130,2131],{},[154,2132,1709],{"href":1708},[133,2134,2135],{},[154,2136,1714],{"href":1713},[2138,2139,2140],"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 .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}html pre.shiki code .slqww, html code.shiki .slqww{--shiki-light:#6182B8;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZMiF, html code.shiki .sZMiF{--shiki-light:#E2931D;--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 .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .skxfh, html code.shiki .skxfh{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sGLFI, html code.shiki .sGLFI{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sFwrP, html code.shiki .sFwrP{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#24292E;--shiki-default-font-style:inherit;--shiki-dark:#E1E4E8;--shiki-dark-font-style:inherit}html pre.shiki code .s2W-s, html code.shiki .s2W-s{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#032F62;--shiki-default-font-style:inherit;--shiki-dark:#9ECBFF;--shiki-dark-font-style:inherit}html pre.shiki code .sithA, html code.shiki .sithA{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#032F62;--shiki-default-font-style:inherit;--shiki-dark:#9ECBFF;--shiki-dark-font-style:inherit}",{"title":43,"searchDepth":65,"depth":65,"links":2142},[2143,2144,2145,2146,2147,2148,2156,2157,2163,2164,2169,2175],{"id":35,"depth":65,"text":36},{"id":160,"depth":65,"text":161},{"id":203,"depth":65,"text":204},{"id":295,"depth":65,"text":296},{"id":553,"depth":65,"text":554},{"id":650,"depth":65,"text":651,"children":2149},[2150,2151,2152,2153,2154],{"id":658,"depth":80,"text":659},{"id":747,"depth":80,"text":748},{"id":929,"depth":80,"text":930},{"id":1103,"depth":80,"text":1104},{"id":1166,"depth":80,"text":2155},"5. Use if and raise a normal exception for user input",{"id":1263,"depth":65,"text":1264},{"id":1492,"depth":65,"text":1493,"children":2158},[2159,2161],{"id":1505,"depth":80,"text":2160},"Use assert when:",{"id":1618,"depth":80,"text":2162},"Use raise ValueError or raise TypeError when:",{"id":1717,"depth":65,"text":1718},{"id":1909,"depth":65,"text":1910,"children":2165},[2166,2167,2168],{"id":1919,"depth":80,"text":1920},{"id":1972,"depth":80,"text":1973},{"id":2019,"depth":80,"text":2020},{"id":2061,"depth":65,"text":2062,"children":2170},[2171,2172,2173,2174],{"id":2065,"depth":80,"text":2066},{"id":2076,"depth":80,"text":2077},{"id":2086,"depth":80,"text":2087},{"id":2099,"depth":80,"text":2100},{"id":2111,"depth":65,"text":2112},"Master assertionerror in python causes and fixes in our comprehensive Python beginner guide.","md",{},"\u002Ferrors\u002Fassertionerror-in-python-causes-and-fixes",{"title":5,"description":2176},"errors\u002Fassertionerror-in-python-causes-and-fixes","u239u237fgAROOmmI99PjiJg0Y6ZX4t4e-cpU8Wy2T0",1777585478193]