黃哥說很多人的循環都寫不好, 請看。
開始說起。
這個是提問者提出的問題。n接觸Python知識不多,然後今天寫了個小程序遇到一個問題,在鍵入3完成循環結束後,程序還會執行一遍輸入數字再結束,我想問怎麼操作使程序才鍵入3之後直接結束循環退出,謝謝。代碼如下:n#!/usr/bin/env pythonn# -*- coding: utf-8 -*-nprint "請選擇你要操作的選項:"nprint "(1) 求數的平均數"nprint "(2) 求數的和"nprint "(3) 退出程序"nwhile True:nts = int(raw_input("請輸入選項(數字對應其選項) --> "))ntlst = []ntnum_inp = raw_input("輸入數字以空格隔開 -->")ntnum_grou = num_inp.split( )ntfor i in num_grou:nttnum = float(i)nttlst.append(num)tntcount = 0ntif s == 1:nttfor n in lst:ntttcount += nnttprint countntelif s == 2:nttfor n in lst:ntttcount += nnttave = count / len(lst)nttprint aventelif s == 3:nttbreakn
該提問者還是不錯的,寫的代碼雖然有改進的空間,但是基本套路都有。
看看黃哥將他的代碼優化如下:
#!/usr/bin/env pythonn# coding:utf-8nn黃哥Python 改寫nnnprint "請選擇你要操作的選項:"nprint "(1) 求數的平均數"nprint "(2) 求數的和"nprint "(3) 退出程序"nnwhile True:nn s = int(raw_input("請輸入選項(數字對應其選項) --> "))n if s == 3:n breakn else:n num_inp = raw_input("輸入數字以空格隔開 -->")n num_grou = num_inp.split()n lst = [int(i) for i in num_grou]n if s == 1:n print sum(lst) / len(lst)n elif s == 2:nn print sum(lst)n
再優化
#!/usr/bin/env pythonn# coding:utf-8nn黃哥Python 改寫nnnprint "請選擇你要操作的選項:"nprint "(1) 求數的平均數"nprint "(2) 求數的和"nprint "(3) 退出程序"nnwhile True:nn s = raw_input("請輸入選項(數字對應其選項) --> ")n if not s.isdigit():n print "請輸入數字"n continuen s = int(s)n if s == 3:n breakn num_inp = raw_input("輸入數字以空格隔開 -->")n # 此處最好加一個數據輸入正確性驗證,留給學習者自己加吧。n num_grou = num_inp.split()n lst = [int(i) for i in num_grou]n if s == 1:n print sum(lst) / len(lst)n elif s == 2:n print sum(lst)n
2、基礎很重要,有的號稱會編程者,一去面試就掛,為啥,好高騖遠,會調用幾個模塊就認為自己會編程了。
看看下面的題目,會不會做,如果不會做,從基礎的訓練起。不然面試通不過。
python習題:python 判讀是不是等差數列,要求演算法時間複雜度為O(NlogN)
Python習題:Python 判讀是不是等差數列,要求演算法時間複雜度為O(NlogN) - 知乎專欄python 練習題:走迷宮
Python 練習題:走迷宮 - 知乎專欄python列表元素分組
Python列表元素分組 - 知乎專欄
python 面試題:相同字母異序詞。
Python 面試題:相同字母異序詞。 - 知乎專欄python剪刀石頭布編程思路
Python剪刀石頭布編程思路 - 知乎專欄
推薦閱讀:
※使用Python操作機器人聊天
※一步一步教你認識Python閉包
※入門教程沒有告訴你的sqlalchemy常用操作
※跟黃哥學python之類__call__方法
※Python 3 實現 Markdown 解析器
TAG:Python |