練習:帶迴圈和條件判斷的給定一個數值num, 使用者輸入使用raw_input()函式來提示使用者輸入一個1和100之間的數,如果使用者輸入的數等於num, 顯示成功並退出。否則顯示一個錯誤資訊然後再次提示使用者輸入數值,直到滿足條件為止。
方法一:利用if語句
#!/usr/bin/env python
#coding:utf-8
for num in range(1,101):
num = input(‘Please input the correct number(0-100):’)
if 68 print “the number is high” elif 0<=num<68: print “the number is low” elif num == 68: print “Congratulations,right” exit() else: print “Please input correct number(0-100)” 方法二,利用while 和if 語句相巢狀 num = 89 while True: guess_num = input(“猜測<1-100之間的數>:”) if num == guess_num: print “恭喜猜中” exit() elif num > guess_num: print “too small” else: print “too large” ## while 迴圈 1。while中 break和continue的區別 break: 遇到break,跳出所有的迴圈; continue: 跳出此次迴圈,回到迴圈的開始繼續執行; 例如:列印1-10之間的數並且跳過5 2。while if 的運用 #!/usr/bin/env python # coding:utf-8 i = 0 while i < 10: i += 1 if i == 5: continue print i 3。死迴圈while。。。 else。。。。。 模擬shell輸入環境 while True: cmd = raw_input(“[root@>>> ~]# ”) if not cmd: continue elif cmd == “quit”: break else: print “run %s” %(cmd) ##字串 字串定義的三種方式:‘hello’ “hello” “”“hello”“” 注意三重引號有三個作用: • 塊註釋:多行程式碼註釋 • 函式的doc文件 • 字串格式化 轉義符號:一個反斜線加一個單一字元可以表示一個特殊字元,通常是不可列印的字元 \n: 代表換行符 \“: 代表雙引號本身 \t: 代表tab符 \‘: 代表單引號本身 運算子 成員運算子: in 連線運算子: and 重複運算子:* *索引:獲取特定偏移的元素,給出一個字串,可輸出任意一個字元,如果索引為負數,就是相當於從後向前數。 *切片 切片S[i:j]提取對應的部分作為一個序列: •上邊界並不包含在內; •如果沒有給出切片的邊界,切片的下邊界預設為0,上邊界為字串的長度; •擴充套件的切片S[i:j:k],其中i,j含義同上,k為遞增步長;切片s[:]獲取從偏移量為0到末尾之間的元素,是實現有效複製的一種方法 字串的常用操作: str。capitalize() //將首字母大寫 str。strip() ## 刪除首尾的字串或者空格 str。endswith() ##判斷以什麼結尾,返回為布林值 str。startswith() ##判斷以什麼開頭返回布林值 str。isalnum() //判斷是否都是字母或數字 str。isalpha() //判斷是否都是字母 str。isdigit() //判斷是否都是數字 str。islower() //判斷是否都是小寫 str。isspace() //判斷是否都是英文空格 str。istitle() //判斷是不是都是標題(有大小寫) str。isupper() //判斷是不是都為大寫字母 str。find(sub[,start[,end]]) - 判斷sub是否在str中,存在返回索引值,不存在返 回-1。 str。index(sub[,start[,end]]) - 與find方法函式功能相同,如果sub不存在時丟擲 ValueError異常; str。center(width[,fillchar]) 返回一個長為width的新字串,在新字串中原字元居中,其他部分用fillchar指定的符號填充,未指定時透過空格填充。字串常用操作: str。ljust() 左邊填充 str。rjust()右邊填充 str。count(sub[, start[, end]]) -> int 返回sub在str中出現的次數,如果start與end指定,則返回指定範圍內的sub出現次數 str。split([sep[,maxsplit]]) 以sep字串作為分割符對str進行切割,預設為空格 str。join() 案例一: 根據變數名的命名規則,判斷變數名是否合法 while True: s = raw_input(”變數名:“) if not (s[0]。isalpha() or s[0]==”_“): print ”不合法“ else: # 依次讀取除了第一個字元之外的所有字元; for i in s[1:]: if not(i。isalnum() or i==”_“): print ’不合法‘ break else: print ”合法“ 列印字串對應的索引號: s = ”hello“ for i in range(len(s)): print ”%s %d“ %(s[i],i) ##zip 分包 a = ”ABC“ b = ”abc“ zip (a,b) ##列表 定義一個空列表 list = [ ] 定義一個包含元素的列表,元素可以是任意型別,包括數值型別,列表,字串等均可 list = [”fentiao“, 4, ’gender‘] list1 = [’fentiao‘,(4,’male‘)] 工廠函式方式建立列表: li = list(”hello“) 列表的索引、切片,拼接+, 重複*, 成員運算子 可以透過for i in list1進行遍歷列表中的各個元素。 更新列表 。append, 。extend; append: 新增一個元素 extend: 新增一個列表 刪除列表; 。pop() :按照索引刪除列表中的數 預設刪除最後一個 。remove 刪除列表中的某一個元素 列表的排序 。insert( ) 插入元素 。reverse( ) 倒置順序 。ip。sort( ) 排序 綜合考察練習: 案例1 1。 使用者名稱和密碼分別儲存在列表中; 2。 使用者登入時,判斷該使用者是否註冊; 2。 使用者登入時,為防止駭客暴力破解, 僅有三次機會; 3。 如果登入成功,顯示登入成功(exit(), break)。 方法一 #!/usr/bin/env python #coding: utf-8 users = [”user1“, ”user2“, ”user3“] passwords = [”123“, ”456“, ”789“] i = 0 while i < 3: name = raw_input(”請輸入使用者名稱:“) if name not in users: print ”使用者未註冊“ break password = raw_input(”請輸入密碼:“) i += 1 index = users。index(name) if password == passwords[index]: print ”恭喜登入成功“ break else: print ”請輸入正確的使用者名稱或密碼!“ else: print ”已登入三次,請稍後再試“ 方法二: #!/usr/bin/env python # coding:utf-8 user = [”westos“,”redhat“,”admin“,”lee“] passwd = [”123“, ”344“, ”312“, ”324“] trycount = 0 while trycount < 3: trycount +=1 in_user = raw_input(”輸入使用者名稱:“) if in_user not in user: print ”使用者未註冊“ break in_passwd = raw_input(”輸入密碼:“) for i in range(len(user)): if in_user == user[i] and in_passwd == passwd[i]: print ”登陸成功“ exit() else: print ”密碼錯誤“ else: print ”超過三次“ 案例2 出入棧 stack = [ ] info = ”“” 棧操作 1。 出棧 2。 入棧 3。 檢視棧元素 4。 退出 “”“ print info while 1: choice = raw_input(”Choice:“)。strip() if choice == ’1‘: if not stack == []: stack。pop() else: print ”棧為空“ elif choice == ’2‘: value = raw_input(”請輸入入棧的值:“)。strip() stack。append(value) elif choice == ’3‘: print ”棧元素:“, for i in stack: print i, print elif choice == ’4‘: exit() else: print ”not valid choice“