{"id":210,"date":"2021-06-07T14:11:34","date_gmt":"2021-06-07T06:11:34","guid":{"rendered":"https:\/\/swordofmorning.com\/?p=210"},"modified":"2025-10-09T13:56:21","modified_gmt":"2025-10-09T05:56:21","slug":"swust-python-review","status":"publish","type":"post","link":"https:\/\/swordofmorning.com\/index.php\/2021\/06\/07\/swust-python-review\/","title":{"rendered":"Swust Python \u590d\u4e60"},"content":{"rendered":"<p><div class=\"has-toc have-toc\"><\/div><\/p>\n<h2>\u4e00\u3001\u6587\u4ef6I\/O<\/h2>\n<h3>1.1 \u8bfb\u53d6CSV\u4e0e\u904d\u5386<\/h3>\n<ol>\n<li>\u5bfc\u5165csv\u5e93<\/li>\n<li>open\u6587\u4ef6<\/li>\n<li>\u521b\u5efa\u201c\u8868\u5934\u201d\u7684tuple<\/li>\n<li>\u4f7f\u7528csv.DictReader()\u51fd\u6570<\/li>\n<li>\u904d\u5386\u4f7f\u7528for Name in\uff0cName\u7c7b\u578b\u4e3aOrderedDict\uff0c\u4f7f\u7528tuple\u5143\u7d20\u4f5c\u4e3a\u4e0b\u6807\u8bbf\u95ee<\/li>\n<\/ol>\n<pre><code class=\"language-python\">import csv\n\ncsvFile = open(&quot;test.csv&quot;, &#039;r&#039;, encoding = &#039;utf-8&#039;, errors = &#039;ignore&#039;)\n# IO\nfieldNames = (&quot;\u57ce\u5e02&quot;, &quot;\u73af\u6bd4&quot;, &quot;\u540c\u6bd4&quot;, &quot;\u5b9a\u57fa&quot;)\n# Tuple\ncsvRead = csv.DictReader(csvFile, fieldNames)\n# DictReader\uff0cfieldNames\u7701\u7f3a\u5219\u4ee5\u7b2c\u4e00\u884c\u4e3a\u8868\u5934\n\nfor row in csvRead:\n    print(row[&#039;\u57ce\u5e02&#039;])\n# End for<\/code><\/pre>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\u503c\u5f97\u6ce8\u610f\u7684\u662f\uff0c\u4e0a\u8ff0\u7684\u904d\u5386\u662f\u4ece\u7b2c0\u884c\u5f00\u59cb\u7684\uff0c\u5373\u5305\u542b\u4e86\u6587\u4ef6\u672c\u8eab\u7684\u8868\u5934\u3002\u82e5\u8981\u6d88\u9664\u6587\u4ef6\u81ea\u5e26\u8868\u5934\uff0c\u53ea\u9700\u8981\u5728\u6784\u9020DictReader\u65f6\u7701\u7f3a\u7b2c\u4e8c\u4e2a\u53c2\u6570\u3002<\/p>\n<h3>1.2 csv\u8f6c\u6362json<\/h3>\n<ol>\n<li>\u5bfc\u5165csv\u4e0ejson\u5e93<\/li>\n<li>open\u6587\u4ef6<\/li>\n<li>\u904d\u5386csv\uff0c\u540c\u65f6\u4f7f\u7528json.dump\u5199\u5165\u6587\u4ef6\uff0c\u540c\u65f6\u4f7f\u7528write\u5199\u5165\u4e00\u4e2a\u6362\u884c\u7b26<\/li>\n<\/ol>\n<pre><code class=\"language-python\">import csv\nimport json\n\ncsvFile = open(&quot;test.csv&quot;, &#039;r&#039;, encoding = &#039;utf-8&#039;, errors = &#039;ignore&#039;)\njsonFile = open(&quot;out.json&quot;, &#039;w&#039;, encoding = &#039;utf-8&#039;, errors = &#039;ignore&#039;)\n\nfieldNames = (&quot;\u57ce\u5e02&quot;, &quot;\u73af\u6bd4&quot;, &quot;\u540c\u6bd4&quot;, &quot;\u5b9a\u57fa&quot;)\ncsvRead = csv.DictReader(csvFile, fieldNames)\n# fieldNames\u6839\u636e\u60c5\u51b5\u7701\u7565\n\nfor row in csvRead:\n    json.dump(row, jsonFile)\n    jsonFile.write(&#039;\\n&#039;)\n# End for<\/code><\/pre>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\u540c\u6837\uff0c\u4e0a\u8ff0\u4ee3\u7801\u4e2d\u53ef\u80fd\u5305\u542b\u8868\u5934\uff0c\u89e3\u6790\u65f6\u6309\u884c\u89e3\u6790\u3002<\/p>\n<h3>1.3 open\u7684\u53c2\u6570\u9009\u62e9<\/h3>\n<pre><code class=\"language-python\">def OpenFile(p_mode):\n    TxtFile = open(&quot;test.txt&quot;, p_mode, encoding=&quot;utf-8&quot;, errors=&quot;ignore&quot;)\n    return TxtFile\n# End def<\/code><\/pre>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\u53c2\u6570p_mode\u7684\u9009\u62e9\uff1a<\/p>\n<ol>\n<li>w\uff1a\u8986\u5199<\/li>\n<li>r\uff1a\u8bfb\u53d6<\/li>\n<li>a\uff1a\u9644\u52a0<\/li>\n<\/ol>\n<h3>1.4 split()\u4e0eIO\u7684\u904d\u5386<\/h3>\n<pre><code class=\"language-python\">for row in testFile:\n    rowList = row.split()\n# End for<\/code><\/pre>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\u5728\u4e0a\u8ff0\u904d\u5386\u4e2d\uff0ctestFile\u7c7b\u578b\u4e3aIO\uff0c\u5373\u76f4\u63a5\u4f7f\u7528open()\u6253\u5f00\u7684\u6587\u4ef6\uff0crow\u4e3astring\u3002\u6b64\u65f6\u5bf9\u5b83\u6309\u884c\u904d\u5386\u53ef\u4ee5\u4f7f\u7528split()\u65b9\u6cd5\uff0c\u8fd4\u56delist\uff0c\u5176\u4e2d\u6dfb\u52a0\u9700\u8981\u7684\u5206\u5272\u6807\u8bc6\u7b26\u5373\u53ef\uff0c\u9ed8\u8ba4\u4e3a\u7a7a\u683c\u3002<\/p>\n<h2>\u4e8c\u3001\u6b63\u5219\u8868\u8fbe\u5f0f<\/h2>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\u9996\u5148\u5bfc\u5165re\u5e93\u3002<\/p>\n<pre><code class=\"language-python\">if (re.match(&#039;^[-+]?[0-9]+\\.[0-9]+$&#039;, TC_input)) :\n    print(&quot;\u8f93\u5165\u9519\u8bef\uff0c\u5fc5\u987b\u8f93\u5165\u6574\u6570\uff01&quot;)\n    F_ReInput = True\nelif (re.match(&#039;^[-+]?[0-9]+&#039;, TC_input)) :\n    F_ReInput = False\n    F_Cancel = False\nelse :\n    print(&quot;\u8f93\u5165\u683c\u5f0f\u9519\u8bef\uff0c\u7ed3\u675f\u7a0b\u5e8f\uff01&quot;)\n    F_Cancel = True\n#End if<\/code><\/pre>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;re.match()\u8fd4\u56deTure|False\uff0c\u7b2c\u4e00\u53c2\u6570\u4e3a\u6b63\u5219\u8868\u8fbe\u5f0f\uff0c\u7b2c\u4e8c\u53c2\u6570\u4e3a\u4efb\u610fstr\u3002<\/p>\n<h2>\u4e09\u3001\u663e\u793a\u8f93\u51fa<\/h2>\n<h3>3.1 \u5c45\u4e2d\u5bf9\u9f50<\/h3>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\u4f7f\u7528str.center()<\/p>\n<pre><code class=\"language-python\">for i in range(0, 10) :\n    Tri = &#039;*&#039; * (2 * i + 1)\n    # \u7b2ci\u884c\u7684*\u53f7\n    print(Tri.center(40, &#039; &#039;))\n#End for<\/code><\/pre>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;str.center()\u7b2c\u4e00\u53c2\u6570\u4e3a\u8ddd\u79bb\uff08\u5b57\u7b26\u6570\u91cf\uff09\uff0c\u7b2c\u4e8c\u53c2\u6570\u4e3a\u586b\u5145\u5b57\u7b26\u3002<\/p>\n<h3>3.2 ASCII\u5b57\u7b26\u8f6c\u6362<\/h3>\n<ul>\n<li>ord()\uff0cASCII\u5b57\u7b26-&gt;ASCII\u503c<\/li>\n<li>chr()\uff0cASCII\u503c-&gt;ASCII\u5b57\u7b26<\/li>\n<\/ul>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\u4e0b\u9762\u8bf7\u770b\u4e00\u6bb5\u4f8b\u9898\uff1a\u51ef\u6492\u5bc6\u7801\uff0c\u5c06\u5b57\u6bcd\u987a\u79fb3\u4e2a\u5b57\u7b26\u3002<\/p>\n<pre><code class=\"language-python\">Ori = input(&#039;Input orignal string: \\n&#039;)\n# \u8f93\u5165\n\nOri = list(Ori)\nIdxU = ord(&#039;A&#039;) + 23\nIdxL = ord(&#039;a&#039;) + 23\n#\u9884\u5904\u7406\n\nfor i in range(len(Ori)) :\n    if ord(Ori[i]) \/ IdxU &lt; 1 and int(ord(Ori[i])) in range(ord(&#039;A&#039;), ord(&quot;Z&quot;) + 1):\n        Ori[i] = chr(ord(Ori[i]) + 3)\n    elif ord(Ori[i]) \/ IdxU &gt;= 1 and ord(Ori[i]) in range(ord(&#039;A&#039;), ord(&quot;Z&quot;) + 1):\n        Ori[i] = chr(ord(Ori[i]) - 23)\n    elif ord(Ori[i]) \/ IdxL &lt; 1 and ord(Ori[i]) in range(ord(&#039;a&#039;), ord(&quot;z&quot;) + 1):\n        Ori[i] = chr(ord(Ori[i]) + 3)\n    elif ord(Ori[i]) \/ IdxL &gt;= 1 and ord(Ori[i]) in range(ord(&#039;a&#039;), ord(&quot;z&quot;) + 1):\n        Ori[i] = chr(ord(Ori[i]) - 23)\n    else :\n        continue\n    #End if\n#End for\n\nprint(Ori)<\/code><\/pre>\n<h3>3.3 \u4fdd\u7559\u5c0f\u6570<\/h3>\n<pre><code class=\"language-python\">\u00b71\uff1aprint(\u201c%.2f\u201d % a)\n\u00b72\uff1around(a, 2)\n\na = 12.345\n\nprint(&quot;%.2f&quot; % a)\nprint(round(a, 2))<\/code><\/pre>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\u8fd9\u4e24\u79cd\u65b9\u6cd5\u90fd\u662f\u56db\u820d\u4e94\u5165\u7684\uff0c\u82e5\u8981\u4f7f\u7528\u53bb\u5c3e\u6cd5\u6216\u8fdb\u4e00\u6cd5\u5219\u5bf9\u5176\u00b1\u201d0.5\u2033\u518d\u56db\u820d\u4e94\u5165\u5373\u53ef\u3002<\/p>\n<h3>3.4 format<\/h3>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\u4e0b\u9762\u770b\u4e00\u6bb5\u4ee3\u7801\uff08\u7edf\u8ba1\u5b57\u7b26\u4e32\u7c7b\u578b\uff09\u6f14\u793aformat\u7684\u4f7f\u7528\u65b9\u6cd5\u3002<\/p>\n<pre><code class=\"language-python\">inStr = input(&#039;Input string\\n&#039;)\n\nnumCh = 0\nnumNu = 0\nnumSp = 0\nnumOt = 0\n# ans initialize\n\nfor i in range(len(inStr)) :\n    if (&#039;a&#039; &lt;= inStr[i] and inStr &lt;= &#039;z&#039;) or (&#039;A&#039; &lt;= inStr[i] and inStr &lt;= &#039;Z&#039;) :\n        numCh += 1\n    elif &#039;0&#039; &lt;= inStr[i] and inStr &lt;= &#039;9&#039; :\n        numNu += 1\n    elif inStr[i] == &#039; &#039; :\n        numSp += 1\n    else :\n        numOt += 1\n    # end if\n# end for\n\nprint(&quot;ch : &#039;{0}&#039;, nu : &#039;{1}&#039;, sp : &#039;{2}&#039;, ot : &#039;{3}&#039;&quot;.format(numCh, numNu, numSp, numOt))<\/code><\/pre>\n<h2>\u4e09\u3001\u6570\u636e\u7ed3\u6784<\/h2>\n<h3>3.1 \u5217\u8868<\/h3>\n<ol>\n<li>\u58f0\u660e\uff1alist = [ele, ele]<\/li>\n<li>\u8bbf\u95ee\uff1alist[idx]\uff0c\u6ce8\u610fidx\u4e3aint<\/li>\n<\/ol>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\u4e0b\u9762\u901a\u8fc7for in range\u5b9e\u73b0\u5feb\u901f\u6784\u9020\u5217\u8868\uff1a<\/p>\n<pre><code class=\"language-python\">CodeList = []\nfor i in range(ord(&#039;a&#039;), ord(&#039;z&#039;) + 1):\n    CodeList.append(chr(i))\n# End for<\/code><\/pre>\n<ol start=\"3\">\n<li>\u6392\u5e8f\uff1alist.sort()<\/li>\n<\/ol>\n<pre><code class=\"language-python\">NumList.sort(reverse=True)\n# \u9ed8\u8ba4\u5347\u5e8f\uff0creverse=Ture\u4e3a\u964d\u5e8f\n\n###########################################\n\n# \u83b7\u53d6\u5217\u8868\u7684\u7b2c\u4e8c\u4e2a\u5143\u7d20\ndef takeSecond(elem):\n    return elem[1]\n# End def\n\n# \u5217\u8868\nrandom = [(2, 2), (3, 4), (4, 1), (1, 3)]\n\n# \u6307\u5b9a\u7b2c\u4e8c\u4e2a\u5143\u7d20\u6392\u5e8f\nrandom.sort(key = takeSecond)<\/code><\/pre>\n<h3>3.2 \u5b57\u5178<\/h3>\n<ol>\n<li>\u6784\u9020\uff1adict = {ele, ele}<\/li>\n<li>\u8bbf\u95ee\uff1adict[idx]\uff0c\u6ce8\u610fidx\u4e3aele.first\u5143\u7d20\u7c7b\u578b<\/li>\n<\/ol>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\u4e0b\u9762\u662f\u4e00\u6bb5\u6f14\u793a\uff1a<\/p>\n<pre><code class=\"language-python\">NumDict = {1:&quot;One&quot;, 2:&quot;Two&quot;, 3:&quot;Three&quot;, 4:&quot;Four&quot;, 5:&quot;Five&quot;, 6:&quot;Six&quot;, 7:&quot;Seven&quot;, 8:&quot;Eight&quot;, 9:&quot;Nine&quot;, 0:&quot;Zero&quot;}\n\ninStr = input(&#039;input your phone num: &#039;)\n\nfor i in range(len(inStr)):\n    if (i != len(inStr)):\n        print(NumDict[int(inStr[i])], end=&#039; &#039;)\n    else:\n        print(NumDict[int(inStr[i])], end=&#039;\\n&#039;)\n    # End if\n# End for<\/code><\/pre>\n<h3>3.3 \u7efc\u5408\u5e94\u7528<\/h3>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;\u4e0b\u9762\u662f\u4e00\u4e2a\u5b66\u751f\u6210\u7ee9\u8868\uff0c\u6c42\u5176\u7efc\u5408\u6210\u7ee9 = \u671f\u4e2d<em>0.5 + \u671f\u672b<\/em>0.5\uff0c\u5e76\u6309\u7efc\u5408\u6210\u7ee9\u964d\u5e8f\u6392\u5e8f\u3002<br \/>\n\u59d3\u540d,\u671f\u4e2d,\u671f\u672b<br \/>\n\u5f20\u4e09,69,95<br \/>\n\u674e\u56db,55,85<br \/>\n\u738b\u4e94,79,85<br \/>\n\u5b8b\u6d77\u6e90,59,60<\/p>\n<pre><code class=\"language-python\">import csv\n\n# \u6c42\u7efc\u5408\u6210\u7ee9(0.5, 0.5)\uff0c\u964d\u5e8f\u6392\u5e8f\n\n# \u8bfb\u53d6\u6587\u4ef6\ndef OpenCsv(p_mode):\n    refile = open(&#039;score.csv&#039;, p_mode, encoding = &#039;utf-8&#039;, errors = &#039;ignore&#039;)\n    return refile\n# End def\n\n# \u521b\u5efa\u62f7\u8d1d\u6587\u4ef6\ndef OpenCopy(p_mode):\n    refile = open(&#039;score_copy.csv&#039;, p_mode, encoding = &#039;utf-8&#039;, errors = &#039;ignore&#039;)\n    return refile\n# End def\n\n#  \u904d\u5386\u6c42\u503c\uff0c\u6570\u636e\u5199\u5165\u6587\u4ef6\u526f\u672c\ndef Taverser():\n    csvFile = OpenCsv(&#039;r&#039;)\n    csvRead = csv.DictReader(csvFile)\n\n    csvCopy = OpenCopy(&#039;w&#039;)\n    csvCopy = OpenCopy(&#039;a&#039;)\n    # \u6e05\u7a7a\u3001\u52a0\u5165\n\n    csvCopyHeader = (&quot;\u59d3\u540d&quot;, &quot;\u671f\u4e2d&quot;, &quot;\u671f\u672b&quot;, &quot;\u7efc\u5408&quot;)\n    csvCopy.write(&quot;{0},{1},{2},{3}\\n&quot;.format(csvCopyHeader[0], csvCopyHeader[1], csvCopyHeader[2], csvCopyHeader[3]))\n\n    for row in csvRead:\n        totalScore = (int(row[&quot;\u671f\u4e2d&quot;]) * 0.5) + (int(row[&quot;\u671f\u672b&quot;]) * 0.5)\n        csvCopy.write(&quot;{0},{1},{2},{3}\\n&quot;.format(row[&quot;\u59d3\u540d&quot;], row[&quot;\u671f\u4e2d&quot;], row[&quot;\u671f\u672b&quot;], totalScore))\n    # End for\n# End def\n\n# \u83b7\u53d6tuple\u5143\u7d20\ndef GetTotal(ele):\n    return float(ele[3])\n# End def\n\n# \u6392\u5e8f\ndef CsvSort():\n    csvCopy = OpenCopy(&#039;r&#039;)\n    csvCopyRead = csv.DictReader(csvCopy)\n\n    CopyList = []\n\n    for row in csvCopyRead:\n        CopyList.append((row[&quot;\u59d3\u540d&quot;], row[&quot;\u671f\u4e2d&quot;], row[&quot;\u671f\u672b&quot;], row[&quot;\u7efc\u5408&quot;]))\n    # End for\n\n    CopyList.sort(key = GetTotal, reverse = True)\n\n    return CopyList\n# End def\n\n# \u8986\u5199\ndef Overwrite():\n    TargetFile = OpenCsv(&#039;w&#039;)\n    TargetFile = OpenCsv(&#039;a&#039;)\n    CopyList = CsvSort()\n\n    csvCopyHeader = (&quot;\u59d3\u540d&quot;, &quot;\u671f\u4e2d&quot;, &quot;\u671f\u672b&quot;, &quot;\u7efc\u5408&quot;)\n    TargetFile.write(&quot;{0},{1},{2},{3}\\n&quot;.format(csvCopyHeader[0], csvCopyHeader[1], csvCopyHeader[2], csvCopyHeader[3]))\n\n    for ele in CopyList:\n        TargetFile.write(&quot;{0},{1},{2},{3}\\n&quot;.format(ele[0], ele[1], ele[2], ele[3]))\n    # End for\n# End def\n\ndef main():\n    Taverser()\n    Overwrite()\n# End def\n\nmain()<\/code><\/pre>\n<h2>\u56db\u3001jieba\u5e93<\/h2>\n<pre><code class=\"language-python\">import jieba\n\ndef takeSecond(elem):\n return elem[1]\n\n# \u4e3b\u6587\u672c\npath = &quot;\u4e09\u56fd\u6f14\u4e49.txt&quot;\nfile = open(path, &quot;r&quot;, encoding=&quot;utf-8&quot;)\ntext = file.read()\nfile.close()\n\nwords = jieba.lcut(text)\ncounts = {}\n# \u5355\u8bcd\u7edf\u8ba1\nfor word in words:\n    if len(word) == 1:\n        continue\n    elif ((word == &quot;\u5b54\u660e&quot;) or (word == &quot;\u5b54\u660e\u66f0&quot;) or (word == &quot;\u8bf8\u845b\u4eae&quot;)):\n        reword = &quot;\u8bf8\u845b\u4eae&quot;\n    elif ((word == &quot;\u5218\u5907&quot;) or (word == &quot;\u7384\u5fb7\u66f0&quot;) or (word == &quot;\u5148\u4e3b&quot;) or (word == &quot;\u7384\u5fb7&quot;)):\n        reword = &quot;\u5218\u5907&quot;\n    elif ((word == &quot;\u4e91\u957f&quot;) or (word == &quot;\u5173\u7fbd&quot;) or (word == &quot;\u5173\u516c&quot;)):\n        reword = &quot;\u5173\u7fbd&quot;\n    elif ((word == &quot;\u540e\u4e3b&quot;) or (word == &quot;\u5218\u7985&quot;)):\n        reword == &quot;\u5218\u7985&quot;\n    else:\n        reword = word\n    # End if\n\n    counts[reword] = counts.get(reword, 0) + 1\n# End for\n\n# \u6392\u9664\u9879\nexcludes = {&quot;\u5c06\u519b&quot;, &quot;\u5374\u8bf4&quot;, &quot;\u4e1e\u76f8&quot;, &quot;\u4e8c\u4eba&quot;, &quot;\u4e0d\u53ef&quot;, &quot;\u8346\u5dde&quot;, &quot;\u4e0d\u80fd&quot;, &quot;\u5982\u6b64&quot;,\n&quot;\u5546\u8bae&quot;, &quot;\u4e3b\u516c&quot;, &quot;\u5982\u4f55&quot;, &quot;\u519b\u58eb&quot;, &quot;\u5de6\u53f3&quot;, &quot;\u519b\u9a6c&quot;, &quot;\u5f15\u5175&quot;, &quot;\u5927\u559c&quot;, &quot;\u6b21\u65e5&quot;, &quot;\u5929\u4e0b&quot;,\n&quot;\u4e1c\u5434&quot;, &quot;\u4e8e\u662f&quot;, &quot;\u4eca\u65e5&quot;, &quot;\u4e0d\u6562&quot;, &quot;\u9b4f\u5175&quot;, &quot;\u4e00\u4eba&quot;, &quot;\u90fd\u7763&quot;, &quot;\u4eba\u9a6c&quot;, &quot;\u965b\u4e0b&quot;, &quot;\u4e0d\u77e5&quot;,\n&quot;\u6c49\u4e2d&quot;, &quot;\u53ea\u89c1&quot;, &quot;\u4f17\u5c06&quot;, &quot;\u4e0a\u9a6c&quot;, &quot;\u5927\u53eb&quot;, &quot;\u8700\u5175&quot;, &quot;\u592a\u5b88&quot;, &quot;\u6b64\u4eba&quot;, &quot;\u592b\u4eba&quot;, &quot;\u540e\u4eba&quot;,\n&quot;\u5929\u5b50&quot;, &quot;\u4e00\u9762&quot;, &quot;\u4f55\u4e0d&quot;, &quot;\u5927\u519b&quot;, &quot;\u5ffd\u62a5&quot;, &quot;\u80cc\u540e&quot;, &quot;\u57ce\u4e2d&quot;, &quot;\u5148\u751f&quot;, &quot;\u4f55\u6545&quot;, &quot;\u767e\u59d3&quot;,\n&quot;\u7136\u540e&quot;, &quot;\u5148\u950b&quot;, &quot;\u4e0d\u5982&quot;, &quot;\u8d76\u6765&quot;, &quot;\u4ee4\u4eba&quot;, &quot;\u6210\u90fd&quot;, &quot;\u539f\u6765&quot;, &quot;\u6c5f\u4e1c&quot;, &quot;\u4e0b\u9a6c&quot;, &quot;\u6b63\u662f&quot;,\n&quot;\u5ffd\u7136&quot;, &quot;\u558a\u58f0&quot;, &quot;\u5f90\u5dde&quot;, &quot;\u56e0\u6b64&quot;, &quot;\u4e0d\u89c1&quot;, &quot;\u672a\u77e5&quot;, &quot;\u5927\u8d25&quot;, &quot;\u5927\u4e8b&quot;, &quot;\u4e4b\u540e&quot;, &quot;\u5f15\u5175&quot;,\n&quot;\u8d77\u5175&quot;, &quot;\u519b\u4e2d&quot;, &quot;\u4e00\u519b&quot;, &quot;\u5f15\u519b&quot;, &quot;\u63a5\u5e94&quot;, &quot;\u8fdb\u5175&quot;, &quot;\u5927\u60ca&quot;, &quot;\u53ef\u4ee5&quot;, &quot;\u4ee5\u4e3a&quot;, &quot;\u5927\u6012&quot;,\n&quot;\u4e0d\u5f97&quot;, &quot;\u5fc3\u4e2d&quot;, &quot;\u4e0b\u6587&quot;, &quot;\u4e00\u58f0&quot;, &quot;\u8ffd\u8d76&quot;, &quot;\u7cae\u8349&quot;, &quot;\u66f9\u5175&quot;, &quot;\u56de\u62a5&quot;, &quot;\u5206\u89e3&quot;, &quot;\u4e00\u9f50&quot;}\n\nfor delWord in excludes:\n    try:\n        del counts[delWord]\n    except:\n        continue\n    # End try\n# End for\n\n# \u7edf\u8ba1\nitems = list(counts.items())\nitems.sort(key = takeSecond, reverse=True)\n\nfor i in range(20):\n    item = items[i]\n    keyWord = item[0]\n    count = item[1]\n    print(&quot;{0:&lt;10}{1:&gt;5}&quot;.format(keyWord, count))\n# End for<\/code><\/pre>\n<h2>\u4e94\u3001\u56fe\u5f62\u754c\u9762<\/h2>\n<pre><code class=\"language-python\">import tkinter as tk\nimport tkinter.messagebox\n\n########## Section 00 : Function ##########\n\n# \u6253\u5f00\u5bc6\u7801\u6587\u4ef6\ndef OpenFile(p_mode):\n    TxtFile = open(&quot;pwd.txt&quot;, p_mode, encoding=&quot;utf-8&quot;, errors=&quot;ignore&quot;)\n    return TxtFile\n# End def\n\n# \u67e5\u8be2\u4ee5\u5b58\u5728\u7528\u6237\u53ca\u5176\u5bc6\u7801\ndef SearchUser(p_user, p_pwd):\n    Ruser = False\n    Rpwd = False\n    # return value  \u7528\u6237\u662f\u5426\u5b58\u5728\u3001\u5bc6\u7801\u662f\u5426\u9519\u8bef\n\n    pwdFile = OpenFile(&#039;r&#039;)\n    # \u6253\u5f00\u6587\u4ef6\n\n    # Search\n    for row in pwdFile:\n        rowList = row.split()\n        if (rowList[0] == p_user):\n            Ruser = True\n            if (rowList[1] == p_pwd):\n                Rpwd = True\n                break\n            # End if\n        # End if\n    # End for\n\n    return [Ruser, Rpwd]\n# End def\n\n# \u5199\u5165\u5bc6\u7801\ndef SetUser(p_user, p_pwd):\n    pwdFile = OpenFile(&#039;a&#039;)\n\n    pwdFile.write(p_user + &quot; &quot; + p_pwd + &quot;\\n&quot;)\n# End def\n\n# \u767b\u5f55\u51fd\u6570\ndef Login(p_user, p_pwd):\n    re = True\n\n    searchAns = SearchUser(p_user, p_pwd)\n\n    if (searchAns[0] == False):\n        tk.messagebox.showerror(title = &#039;Error&#039;, message = &#039;User no Exists&#039;)\n        re = False\n    elif (searchAns[1] == False):\n        tk.messagebox.showerror(title = &#039;Error&#039;, message = &#039;Wrong password&#039;)\n        re = False\n    else:\n        tk.messagebox.showinfo(title = &#039;Success&#039;, message = &#039;Login Success&#039;)\n    # End if\n\n    return re\n# End def\n\ndef Registe(p_a, p_b):\n    SetUser(p_a, p_b)\n    # \u629b\u51faMessage\n    tk.messagebox.showinfo(title = &#039;Registe&#039;, message = &#039;Registe Success&#039;)\n# End def\n\n# \u6ce8\u518c\u51fd\u6570\ndef Register():\n    rWin = tk.Tk()\n    # \u6ce8\u518c\u7a97\u53e3\n\n    rWin.title(&quot;Registe&quot;)\n    rWin.geometry(&quot;300x300&quot;)\n\n    # \u6ce8\u518cEntry\n    rEntryU = tk.Entry(rWin, show = None)\n    rEntryP = tk.Entry(rWin, show = &#039;*&#039;)\n    rEntryU.pack()\n    rEntryP.pack()\n\n    # \u6ce8\u518c\u6309\u94ae\n    rButton = tk.Button(rWin, text = &#039;Registe&#039;, command = lambda: Registe(rEntryU.get(), rEntryP.get()))\n    rButton.pack()\n\n    # \u7a97\u53e3\u5faa\u73af\n    rWin.mainloop()\n# End def\n\n########## Section 00 : Window ##########\ndef Win():\n    mainWin = tk.Tk()\n    # \u4e3b\u7a97\u53e3\n\n    mainWin.title(&quot;Login&quot;)\n    mainWin.geometry(&#039;500x500&#039;)\n\n    # \u7528\u6237\u540d\u4e0e\u5bc6\u7801\u7684\u8f93\u5165\n    mainEntryU = tk.Entry(mainWin, show = None)\n    mainEntryP = tk.Entry(mainWin, show = &#039;*&#039;)\n    mainEntryU.pack()\n    mainEntryP.pack()\n\n    # \u767b\u5f55\u4e0e\u6ce8\u518c\u6309\u94ae\n    mainButtonL = tk.Button(mainWin, text = &#039;Login&#039;, command = lambda: Login(mainEntryU.get(), mainEntryP.get()))\n    mainButtonR = tk.Button(mainWin, text = &#039;Registe&#039;, command = Register)\n    mainButtonL.pack()\n    mainButtonR.pack()\n\n    mainWin.mainloop()\n# End def\n\ndef main():\n    Win()\n# End def\n\nmain()<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u4e00\u3001\u6587\u4ef6I\/O 1.1 \u8bfb\u53d6CSV\u4e0e\u904d\u5386 \u5bfc\u5165csv\u5e93 open\u6587\u4ef6 \u521b\u5efa\u201c\u8868\u5934\u201d\u7684tuple \u4f7f\u7528csv.DictReader( &#8230;<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[57],"tags":[],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/posts\/210"}],"collection":[{"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/comments?post=210"}],"version-history":[{"count":1,"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/posts\/210\/revisions"}],"predecessor-version":[{"id":1040,"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/posts\/210\/revisions\/1040"}],"wp:attachment":[{"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/media?parent=210"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/categories?post=210"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/tags?post=210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}