練習:帶循環和條件判斷的給定一個數值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,
elif choice == '4':
exit()
else:
print "not valid choice"
閱讀更多 情開酴靡 的文章