python學習 lesson5while迴圈和字串
一、while迴圈
迴圈示意圖
迴圈的作用就是讓 指定的程式碼 重複的執行,while 迴圈最常用的應用場景就是讓執行的程式碼按照指定的次數重複執行。
while 語句基本語法
while 條件語句:
滿足條件執行的語句
else:
不滿足條件執行的語句while 條件語句:
滿足條件執行的語句
else:
不滿足條件執行的語句
eg:
做100內的加法
1+2+3+..+100
sum = 0
i = 1
while i <=100:
sum +=i
i += 1
print(sum)
while死迴圈
當while後的條件永為真時,則會陷入死迴圈(無數次執行)
如何定義條件為真:
while True:
while 1/2/‘python’: bool(1)
while 2>1:
while巢狀
99乘法表
row=1
while row <= 9:
col=1
while col <= row:
print('%d*%d=%d\t' %(col,row,row*col),end='')
col+=1
print('')
row+=1
擴充:
print
\t:在控制檯輸出一個製表符,協助我們在輸出文字的時候垂直方向保持對齊。
\n:在控制檯輸出一個換行符。
:轉義字元
練習題
猜數字遊戲
1.系統隨機生成數字
2.使用者總共有5次猜數字的機會
3.如果數字太大則輸出‘too big’
4.太小輸出‘too small’
5.如果猜對輸出‘恭喜獲獎100萬’並且退出迴圈。
import random ##倒入random模組 right_num = random.randint(1,100) ##隨即生成1-100之間的數 for chance in range(5): ##五次機會 usr_num = int(input('輸入一個1到100數字:')) if usr_num>right_num: print('too big!!你還有%d次機會'%(4-chance)) elif usr_num<right_num: print('too small!!你還有%d次機會'%(4-chance)) else: print('恭喜中獎100萬') break else: print('謝謝惠顧!')
二、字串
1.字串的定義:
str是在Python編寫程式過程中,最常見的一種基本資料型別。字串是許多單個子串組成的序列,其主要是用來表示文字。字串是不可變資料型別,也就是說你要改變原字串內的元素,只能是新建另一個字串。雖然這樣,但python中的字串還是有許多很實用的操作方法。
定義一個字串
a = 'hello' ##普通字串
c = 'what\'s' ##包含特殊字元的字串需要轉移字元/轉義
d = "what's" ##雙引號亦可轉義
e = ''' ##長篇字元塊
使用者管理系統
1.新增使用者
2.刪除使用者
3.改變使用者資訊
4.查詢使用者
'''
字串型別為str,用str()以轉換為字串
2.字串的特性
索引:0,1,2,3,4(索引值是從0開始的)
print(s[0]) #拿出第一個字元
print(s[-1]) #拿出最後一個字元
執行結果:
切片
print(s[0:4:2]) #切片規則 s[start:end:step] 從start開始到end-1結束,步長為2
print(s[:]) #顯示所有字元
print(s[::-1]) #字串倒敘
print(s[1:]) #除了第一個字元以外,其他全部顯示
重複
print(s * 10) #輸出10遍s
連線
print('hello' + 'python')
成員操作符
print('Hi' in s) ##若有這些字元輸出Ture,否則輸出False
print('Hi' not in s) ##若無這些字元輸出Ture,否則輸出False
三、字串常用方法
1.大小寫轉換
是否為題目(首字母大寫)
'Hello'.istitle()
是否為大寫
'HELLO'.isupper()
轉換為大寫
'hello'.upper()
是否為小寫
'Hello'.islower()
轉換為小寫
'Hello'.lower()
轉換為題目
'hello'.title()
2.去除字串的空格
s = ' hello '
s.strip() ##去掉空格
'hello'
s.lstrip() ##左邊取消空格
'hello '
s.rstrip() ##右邊取消空格
' hello'
s = '\nhello '
s.strip()
'hello'
s = '\nhello\t\t' ##\n和\t預設為空格
s.strip()
'hello'
s = 'helloh'
s.strip('h') ##刪除兩邊的h
'ello'
s.strip('he') ##刪除兩邊的he
'llo'
s.lstrip('he') ##刪除左邊的he
'lloh'
3.開頭和結尾的匹配
filename = 'hello.loggg'
if filename.endswith('.log'): ##如果以.log結尾
print(filename)
else:
print('error file')
4.判斷字元
判斷是否為數字’1234’.isdigit()
判斷是否為字母’fafsdv’.isalpha()
判斷是否為字元數字組合’fvavds12314’.isalnum()
練習 便兩名是不是合法:
while True:
s = input('輸入一個變數名:')
if s == 'exit':
break
if s[0]=='_' or s[0].isalpha():
for i in s[1:]:
if not (i.isalnum()) and i=='_':
print('變數名不合法')
break
else:
print('變數名合法')
break
else:
print('變數名不合法')
字串的搜尋與替換
s = ‘hello world hello’
print(s.find(‘hello’)) ##找到子串,並返回最小索引
print(s.rfind(‘hello’)) ##找到子串,並但會最大索引
print(s.replace(‘hello’,‘westos’)) ##替換字串中的hello為westos
字串的對齊
print(‘學生管理系統’.center(30)) ##共輸出30個字元且’學生管理系統’居中
print(‘學生管理系統’.center(30,)) ##共輸出30個字元且’學生管理系統’居中替換空格
print(‘學生管理系統’.ljust(30)) ##從左對其
print(‘學生管理系統’.ljust(30)) ##從右對其
字串的統計
print(‘hello’.count(‘l’)) ##l在字串中出現了幾次
print(‘hello’.count(‘ll’)) ##ll在字串中出現了幾次
print(len(‘hello’)) ##字元傳長度
字串的分離和連線
字串的分離
s = '171.25.254.250'
s1 = s.split('.')
print(s1)
date = '2018-12-04'
date1 = date.split('-')
print(date1)
連線,通過指定的連線符,連線每個字串
print(’’.join(date1))
print(’/’.join(date1))
print(’@’.join(‘hello’))