Python 的創始人爲吉多·範羅蘇姆(Guido van Rossum).1989年的聖誕節期間,吉多·範羅蘇姆爲了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,做爲ABC語言的一種繼承.Python是純粹的自由軟件,源代碼和解釋器CPython遵循 GPL(GNU General Public License)協議.關於python的哲學:python崇尚:"優雅"、"明確"、"簡單",Python是用最簡單最優雅最明確的方法來解決問題.python
單分支結構: 單分支結構的判斷是最簡單的一種形式,若是知足條件則執行,不然跳過IF語句.git
import sys num = 0 if num == 0: print("數值確實等於零!")
雙分支結構: 雙分支用來判斷兩種不一樣的狀況,好比要麼爲真要麼爲假.shell
import sys num=0 if num == 0: print("數值確實等於零!") else: print("你在逗我嗎,這不是零,皮一下很開心!")
多分支結構: 多分枝結構用來判斷大多數狀況,其給予每一個結果一個返回值.小程序
import sys score = 88.8 level = int(score % 10) if level >= 10: print('Level A+') elif level == 9: print('Level A') elif level == 8: print('Level B') elif level == 7: print('Level C') elif level == 6: print('Level D') else: print('Level E')
模擬登錄(1): 模擬用戶登陸小實驗,輸入密碼必須不顯示.api
import sys import getpass name=input("輸入用戶名:") pwd=getpass.getpass("請輸入密碼:") if name == "lyshark" and pwd=="123123": print("歡迎,lyshark,登錄!") else: print("用戶名或密碼錯誤!")
猜數字遊戲(2): 猜數字小遊戲,輸入參數返回指定結果.app
# -*- coding: utf-8 -*- import sys my_num = 38 user_input = int(input("輸入一個數字:")) if user_input == my_num: print("你猜對了!") elif user_input < my_num: print("猜小了!") else: print("猜大了!")
死循環: 演示一個死循環的小例子.框架
import os count = 0 while True: print("這是一個死循環...",count) count +=1
循環打印: 循環打印0-9這幾個數字,且結果不要換行,在一行中輸出.iphone
import os count = 0 while count <= 9: print(count, end=' ') count += 1
中斷循環: 演示一個while循環被中斷的狀況.函數
import os count = 0 while count <=9: print(count, end=' ') if count == 5: break count += 1 else: print('end')
實例1: 打印指定字符串,循環打印其中的每個元素,並每次遞減.工具
import os url="www.baidu.com" while url: print(url) url=url[1:] #--輸出結果------------------------- www.baidu.com ww.baidu.com w.baidu.com .baidu.com baidu.com aidu.com idu.com du.com u.com .com com om m
實例2: 循環打印一些數據,這裏打印0-9
並每次遞增.
import os x=0;y=10 while x<y: print(x) x+=1 #--輸出結果------------------------- 0 1 2 3 4 5 6 7 8 9
實例3: 打印一個字符串,循環打印,打印完成後輸出game over
.
import os url="www.baidu.com" while url: print(url) url=url[:-1] else: print("game over") #--輸出結果------------------------- www.baidu.com www.baidu.co www.baidu.c www.baidu. www.baidu www.baid www.bai www.ba www.b www. www ww w game over
實例4: 逐一顯示指定列表中的全部元素,這裏有三種方法.
>>> list=[1,2,3,4,5,6] >>> count =0 >>> >>> while list: ... print(list[0]) ... list.pop(0) ... >>> list=[1,2,3,4,5,6] >>> while list: ... print(list[-1]) ... list.pop() ... >>> list=[1,2,3,4,5,6] >>> while count < len(list): ... print(list[count]) ... count+=1 ...
實例5: 求100之內全部偶數之和,使用嵌套判斷.
>>> num=0 >>> sum=0 >>> while num <=100: ... if num %2 ==0: ... sum=sum+num ... else: ... pass ... num=num+1
實例6: 逐一顯示指定字典的全部鍵,並於顯示結束後說明總鍵數.
>>> d1 = {'x':1,'y':23,'z':78} >>> keylists = d1.keys() >>> while keylists: print(keylists[0]) keylists.pop[0] else: print(len(d1))
實例7: 建立一個包含了100之內全部奇數的列表.
>>> l1 = [] >>> x = 1 >>> while x < 100: l1.append(x) x += 2
實例8: 列表l1 = [0,1,2,3,4,5,6]
,列表l2 = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']
,以第一個列表中的元素爲鍵,以第二個列表中的元素爲值生成新字典d1
.
>>> l1 = [0,1,2,3,4,5,6] >>> l2 = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'] >>> d1 = {} >>> count = 0 >>> if len(l1) == len(l2): while count < len(l1): d1[l1[count]] = l2[count] count += 1 >>> print(d1)
實例9: 循環並打印相關文字,當到達100次的時候退出.
count = 0 while True: print("hello lyshark:",count) count +=1 if count == 100: print("break") break
實例10: 模擬登錄小程序,程序啓動要求輸入密碼,並判斷若是次數小於3次則登錄成功,不然禁止登錄.
#!/usr/bin/env python # -*- coding:utf-8 -*- import getpass import os name = "lyshark" pwd = "123123" count = 0 while True: if count < 3: print("請輸入用戶名和密碼:") username = input("用戶名:") password = getpass.getpass("密碼:") if username == name and password == pwd: print("恭喜你登錄成功!") break else: print("登錄失敗!用戶名或者密碼錯誤") else: print("你已經輸錯3次,正在退出....") break count += 1
列表遍歷: 經過使用for循環打印一個list列表中的元素.
import os names = ["tom","admin","lyshark","jack"] for x in names: print(x)
列表迭代: 對於一個序列來講,也能夠經過索引進行迭代.
import os names = ["tom","admin","lyshark","jack"] for x in range(len(names)): print(names[x])
打印序列: 經過for循環,遍歷並打印一個序列.
import os T = [(1,2),(3,4),(5,6),(7,8)] for (a,b) in T: print(a,b)
循環遍歷: 遍歷0-9範圍內的全部數字,並經過循環控制語句打印出其中的奇數.
import os for i in range(10): if i % 2 == 0: continue print(i, end=' ')
循環遍歷: 經過循環控制語句打印一個列表中的前3個元素.
import os names = ['Tom', 'Peter', 'Jerry', 'Jack', 'Lilly'] for i in range(len(names)): if i >= 3: break print(names[i])
循環遍歷: 經過for循環打印99乘法表.
import os for j in range(1, 10): for i in range(1, j+1): print('%d*%d=%d' % (i, j, i*j), end='\t') i += 1 print() j += 1
range()函數: 經過使用range函數,每隔必定的個數元素挑選一個元素.
>>> string="hello world my name lyshark" >>> for i in range(0,len(string),2): ... print(string[i])
range()函數: 經過range遍歷,修改列表元素,在原來元素的基礎上修改元素.
>>> list=[1,2,3,4,5] >>> for i in range(len(list)): ... list[i]+=1 ... >>> list [2, 3, 4, 5, 6]
zip()函數: zip函數經常使用於動態的構造字典.
>>> L1 = [1,2,3,4,5] >>> L2 = ['a','b','c','d','e',] >>> zip(L1,L2) >>> >>> keys = [1,2,3,4,5,6,7] >>> vaules = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'] >>> D = {} >>> for (k,v) in zip(keys,values) D[k] = v >>> D
實例1: 逐一分開顯示指定字典d1中的全部元素,也就是字典遍歷打印.
>>> d1 = {'x':123,'y':321,'z':734} >>> for (k,v) in d1.items(): print(k,v) y 321 x 123 z 734
實例2: 逐一顯示列表中l1=['Sun','Mon','Tue','Wed','Thu','Fri','Sat']
中索引爲奇數的元素.
>>> l1=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'] >>> >>> for i in range(1,len(l1),2): print(l1[i])
實例3: 將屬於列表l1=['Sun','Mon','Tue','Wed','Thu','Fri','Sat']
,但不屬於列表l2=['Sun','Mon','Tue','Thu','Sat']
的全部元素定義爲一個新列表l3
,並加入到其中.
>>> l1=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'] >>> l2=['Sun','Mon','Tue','Thu','Sat'] >>> l3 = [] >>> for i in l1: >>> if i not in l2: >>> l3.append(i)
實例4: 將屬於列表namelist=['stu1','stu2','stu3','stu4','stu5','stu6','stu7']
,刪除列表removelist=['stu3','stu7','stu9']
,請將屬於removelist列表中的每一個元素從namelist中移除(屬於removelist,但不屬於namelist的忽略便可).
>>> namelist=['stu1','stu2','stu3','stu4','stu5','stu6','stu7'] >>> removelist=['stu3','stu7','stu9'] >>> for i in removelist: >>> if i in namelist: >>> namelist.remove(i) >>> print(namelist)
實例5: 給指定的一個列表加編號,使用enumerate加編號.
>>> temp=["手機","電腦","玩具"] >>> for (x,y) in enumerate(temp): print(x,y) 0 手機 1 電腦 2 玩具
小總結: 實現讓用戶不斷的猜年齡,但只給最多3次機會,再猜不對就退出程序.
#!/usr/bin/env python # -*- coding:utf-8 -*- age = 22 count = 0 for i in range(10): if count < 3: a = int(input("請輸入一個猜想的數:")) if a == age: print("恭喜你,答對了") break elif a > age: print("你猜的數字大了") else: print("你猜的數字小了") else: b = input("這都猜不對,你繼續玩嗎?(yes or not):") if b == 'yes': count = 0 continue else: print("Bye!下次再玩") count += 1
pass語句: pass是爲了保持程序結構的完整性,該語句不作任何事情,通常用作佔位語句.
>>> for ch in "LyShark": ... if ch == "h": ... pass ... print("這裏執行了pass語句") ... print("字符:",ch) ... #--輸出結果------------------------- 字符: L 字符: y 字符: S 這裏執行了pass語句 字符: h 字符: a 字符: r 字符: k
break語句: break語句用來終止循環語句,即便循環沒有結束任然要執行.
>>> for ch in "LyShark": ... if ch == "a": ... break ... print("字符:",ch) ... #--輸出結果------------------------- 字符: L 字符: y 字符: S 字符: h
continue語句: 該語句語句用來告訴Python跳過當前循環的剩餘語句,而後繼續進行下一輪循環.
>>> for ch in "LyShark": ... if ch == "a": ... continue ... print("字符:",ch) ... #--輸出結果------------------------- 字符: L 字符: y 字符: S 字符: h 字符: r 字符: k
實現元素分類: 有以下值集合[11,22,33,44,55,66,77,88,99]
,將全部大於66的值保存至字典的第一個key中,將小於66的值保存至第二個key的值中,即:{'k1': 大於66的全部值,'k2': 小於66的全部值}
,代碼以下:
list= [11,22,33,44,55,66,77,88,99] bignum=[] smallnum=[] dir={} for num in list: if num>66: bignum.append(num) if num<66: smallnum.append(num) else: pass dir['k1']=bignum dir['k2']=smallnum print(dir)
實現元素查找: 查找元素,移動空格,並查找以a或A開頭,而且以c結尾的全部元素.
li = ["alec", " aric", "Alex", "Tony", "rain"] tu = ("alec", " aric", "Alex", "Tony", "rain") dic = {'k1': "alex", 'k2': ' aric', "k3": "Alex", "k4": "Tony"} for i in li: if i.strip().capitalize().startswith('A') and i.strip().endswith('c'): print(i) for i in tu: if i.strip().capitalize().startswith('A') and i.strip().endswith('c'): print(i) for i in dic.values(): if i.strip().capitalize().startswith('A') and i.strip().endswith('c'): print (i)
實現商品輸出: 輸出商品列表,用戶輸入序號,顯示用戶選中的商品.
#方法一 l1=[1,2,3,4] l2=["手機", "電腦", '鼠標墊', '遊艇'] d=dict(zip(l1,l2)) print(d) num=input("請輸入商品編號:") print("你選擇的商品爲 %s" %d[int(num)]) #方法二 li = ["手機", "電腦", '鼠標墊', '遊艇'] for k, i in enumerate(li): print(k,i) k=input("請輸入商品編號:") print("你選擇的商品爲 %s" % li[int(k)])
實現命令行: 實現一個簡單的命令行小工具框架,可自行添加擴展功能.
import sys import os import platform def help(): print("By:LyShark www.mkdirs.com") def clear(): temp=platform.system() if(temp == "Windows"): os.system("cls") elif(temp == "Linux"): os.system("clear") def main(): while True: try: shell=str(input("[Shell] # ")) if(shell == ""): continue elif(shell == "exit"): exit() elif(shell == "help"): help() elif(shell == "clear"): clear() else: print("未知命令行") except Exception: continue # 程序的開頭,模擬C語言寫法. if __name__ == '__main__': main()
實現三級菜單: 實現用戶交互,顯示省市縣三級聯動的選擇.
dic = { "河北": { "石家莊": ["鹿泉", "藁城", "元氏"], "邯鄲": ["永年", "涉縣", "磁縣"], }, "湖南": { "長沙":['a','b','c'], "株洲":['d','e','f'] }, "湖北": { "武漢":['g','h','i'], "黃石":['j','k','l'] } } for k in dic.keys(): print(k) flag=True while flag: n=input("請輸入你所在省:") for k in dic.keys(): if n in dic.keys(): if k == n: for i in dic[n].keys(): print(i) w = input("請輸入你所在的城市:") for i in dic[n].keys(): if w in dic[n].keys(): if i == w: for k in dic[n][w]: print(k) s=input("請輸入你所在的縣:") for j in dic[n][w]: if s in dic[n][w]: if j==s: print("你所在的位置是:%s省%s市%s縣" % (n,w,s)) flag = False break else: print('不存在,請從新輸入') break else: print('不存在,請從新輸入') break else: print('不存在,請從新輸入') break
實現一個購物車: 實現一個購物車小程序,並符合如下要求.
1.要求用戶輸入總資產,例如:20000
2.顯示商品列表,讓用戶根據序號選擇商品,加入購物車
3.購買,若是商品總額大於總資產,提示帳戶餘額不足,不然購買成功
product = [ ("iphone",5800), ("watch",380), ("bike",800), ("book",120), ("computer",4000) ] shopping_car = [] salary = input("請輸入你的金錢: ") if salary.isdigit(): salary = int(salary) while True: for i in enumerate(product): print(i) user_choice = input(">>>或者q:") if user_choice.isdigit(): user_choice = int(user_choice) if user_choice >= 0 and user_choice < len(product): p_item = product[user_choice] if salary >= p_item[1]: shopping_car.append(p_item[0]) salary -= p_item[1] print("你購買了\033[32m%s\033[0m,你的餘額剩餘\033[31m%s\033[0m" % (p_item[0], salary)) else: print("\033[31m你的餘額不足\033[0m") else: print("你輸入的項目[%s]不存在,請從新輸入" % user_choice) elif user_choice == 'q': print("你購買了這些商品:".center(30,"-")) for i in shopping_car: print("\033[32m%s\033[0m" %i) print("\033[31m餘額%s\033[0m" %salary) exit() else: print("你輸入的[%s]不存在" % user_choice) else: print("你輸入的金額不正確!請從新輸入金額!")
題目(1): 有四個數字:一、二、三、4,能組成多少個互不相同且無重複數字的三位數?各是多少?
程序分析:可填在百位、十位、個位的數字都是一、二、三、4,組成全部的排列後再去掉不知足條件的排列.
>>> for i in range(1,5): ... for j in range(1,5): ... for k in range(1,5): ... if(i!=k) and (i!=j) and(j!=k): ... print(i,j,k) ... #--輸出結果------------------------- 1 2 3 1 2 4 1 3 2 1 3 4 1 4 2 1 4 3 2 1 3 2 1 4
題目(2): 輸入某年某月某日,程序自動判斷這一天是這一年的第幾天?
程序分析:以10月1日爲例,應該先把前9個月的加起來,而後再加上1天即本年的第幾天,特殊狀況,閏年且輸入月份大於2時需考慮多加一天.
# -*- coding: UTF-8 -*- year = int(input('year:\n')) month = int(input('month:\n')) day = int(input('day:\n')) months = (0,31,59,90,120,151,181,212,243,273,304,334) if 0 < month <= 12: sum = months[month - 1] else: print ('data error') sum += day leap = 0 if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)): leap = 1 if (leap == 1) and (month > 2): sum += 1 print ('it is the %dth day.' % sum) #--輸出結果------------------------- year: 2018 month: 10 day: 1 it is the 274th day.
題目(3): 斐波那契數列,又稱黃金分割數列,指的是這樣一個數列:0、一、一、二、三、五、八、1三、2一、3四、….在數學上,費波那契數列是以遞歸的方法來定義.
F0 = 0 (n=0) F1 = 1 (n=1) Fn = F[n-1]+ F[n-2](n=>2) # -*- coding: UTF-8 -*- def fib(n): a,b = 1,1 for i in range(n-1): a,b = b,a+b return a # 輸出了第10個斐波那契數列 print (fib(10))
題目(4): 輸出9*9
乘法口訣表,分行與列考慮,共9行9列,i控制行,j控制列.
import os import sys for x in range(1,10): print() for y in range(1,x+1): print("%d*%d=%d "%(y,x,x*y),end="")
題目(5): 寫一個字符串遍歷查找工具,代碼以下.
import os import sys ls="Type help() for interactive help, or help(object) for help about object" find="help" for x in range(len(ls)): temp=len(find) if str(ls[x:x+temp]) == str(find): print(ls[x:x+temp],x) break
題目(6): 經過使用time模塊中的sleep函數,讓程序每隔1秒執行一次循環.
import os import time dic={1:"admin",2:"guest"} for key,value in dict.items(dic): print(key,value) time.sleep(1)
題目(7): 經過使用time模塊,對指定的時間格式進行必定的格式化操做.
import os import time print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))) #2019-01-18 15:16:28 time.sleep(2) print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())))
題目(8): 有一對兔子,從出生後第3個月起每月都生一對兔子,小兔子長到第三個月後每月又生一對兔子,假如兔子都不死,問每月的兔子總數爲多少?
程序分析:兔子的規律爲數列 1,1,2,3,5,8,13,21....
import os f1 = 1 f2 = 1 for i in range(1,22): print('%12ld %12ld'%(f1,f2)) if (i % 3) == 0: print("") f1 = f1 + f2 f2 = f1 + f2
題目(9): 判斷101-200之間有多少個素數,並輸出全部素數.
程序分析:判斷素數的方法,用一個數分別去除2,若是能被整除,則代表此數不是素數,反之是素數.
import os from math import sqrt from sys import stdout h=0 leap=1 for m in range(101,201): k = int(sqrt(m + 1)) for i in range(2,k + 1): if m % i == 0: leap = 0 break if leap == 1: print("%-4d"%m) h += 1 if h % 10 == 0: print("") leap = 1 print('The total is %d' %h)
題目(10): 輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數.
import os import string strs=input("請輸入一個字符串:") letters=0 space=0 digit=0 others=0 for x in range(len(strs)): ch=strs[x] if ch.isalpha(): letters+=1 elif ch.isspace(): space+=1 elif ch.isdigit(): digit+=1 else: others+=1 print("char=%d,space=%d,digit=%d,others=%d"%(letters,space,digit,others))
題目(11): 讀取db
配置文件,並按照文件中的帳號密碼判斷是否容許登錄.
import os import sys def login(x,y): fp=open("db","r",encoding="utf-8") data=fp.readline().split(":") count=len(open("db","r").readlines()) username=data[0] password=data[1] for i in range(3): if x==username.strip() and y==password.strip(): print("登錄成功") break else: data=fp.readline().split(":") username=data[0] password=data[1] continue fp.close() login("admin","admin") login("lyshark","lyshark")