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