1. 程式人生 > >Py.day5——while迴圈、for迴圈、可變不可變型別

Py.day5——while迴圈、for迴圈、可變不可變型別

今天學的主要有while迴圈、for迴圈、以及可變與不可變型別

一 while迴圈
1 while 條件:
程式碼1
程式碼2
程式碼3
eg1: #列印0-9
n=0
while n<10
print(n)
n+=1

eg2: # 無論輸入或輸錯,都始終迴圈
name='egon'
pwd='123'
while tag:
inp_name=input('please input your name:')
inp_pwd=input('please input your password:')
if inp_name==name and inp_pwd==pwd:
print('successful')
else:
print('error')

eg3: # 輸錯迴圈輸入,輸對了就立即停止輸入了
name='egon'
pwd='123'
tag=True
while tag:
inp_name=input('please input your name:')
inp_pwd=input('please input your password:')
if inp_name==name and inp_pwd==pwd:
print('successful')
tag=False
else:
print('error')

二 while+break:終止本層迴圈(整個一個while)
eg1: # 跟上一個eg3一樣的效果(輸對了不需要重複輸入了)
name='egon'
pwd='123'
while True:
inp_name=input('please input your name:')
inp_pwd=input('please input your password:')
if inp_name==name and inp_pwd==pwd:
print('successful')
break
else:
print('error')

三 結束while迴圈的兩個方式:
1 修改條件:等到下一次迴圈開始時判斷條件為假才會結束while迴圈;
2 break:跳出本層迴圈,直接結束本層while迴圈
{while True: # 不同的括號僅是為了表示每個等級
[while True:
(while True:
break)
break]
break}

eg1: # 輸錯三次就不能再輸了並且有提示
name='egon'
pwd='123'
count=0
tag=True
while tag:
inp_name=input('please input your name:')
inp_pwd=input('please input your password:')
if inp_name==inp_name and inp_pwd==pwd:
print('successful')
tag=False
else:
print('error')
count+=1
if count>=3:
print('too many tries')
break

eg2: #輸錯三次不能再輸了,但是這種方法沒有“輸入太多次”的提示
name='egon'
pwd='123'
count=0
while count<3:
inp_name=input('please input your name:')
inp_pwd=input('please input your password:')
if inp_name==inp_name and inp_pwd==pwd:
print('successful')
break
else:
print('error')
count+=1

四 while+continue
結束本次迴圈,直接進入下一次迴圈
eg1: #continue直接結束這次迴圈,不列印4,開始下次迴圈列印5
n=0
while n<6:
if n==4:
n+=1
continue
print(n)
n+=1

五 while迴圈巢狀
eg1: #成功之後可以選擇需求,如果退出就直接退出了
name = 'egon'
pwd = '123'
count = 0
tag = True
while tag:
inp_name = input('please input your name:')
inp_pwd = input('please input your password:')
if inp_pwd == pwd and inp_name == name:
print('successful')
while tag:
print("""
1 exit
2 get
3 transfor
4 look at
""")
cmd = input('please input your request:')
if cmd == '1':
break
elif cmd == '2':
print('get')
elif cmd == '3':
print('transfor')
elif cmd == '4':
print('look at')
break
tag = False
else:
print('error')
count += 1
if count == 3:
print('too many tries')
break

六 while+else
如果while迴圈沒有被break打斷過,即正常執行完畢後才會執行else的子程式碼
eg1:
n=0
while True # 不能打印出‘run’
if n==3
break
n+=1
else:
print('run...')

eg2:
n=0 # 可以打印出run,也就是正常執行完畢執行了else的程式碼
while n<=3:
print(n)
n+=1
else:
print('run')

七 for迴圈
1 for迴圈在迴圈取值方面比while強
eg1: # while迴圈實現取值,注字串列印print出來沒有引號
sl='hello'
i=0
while i<len(sl):
print(sl[i])
i+=1

eg2: # for迴圈實現取值,注字串列印print出來沒有引號
sl=['a','b','c','d']
for item in sl:
print(item)
print(type(item))

eg3: # 字典是由大括號構成的,查詢一個字典的某個value值,應該dic[key]
dic={'name':'egon','age':18,'gender':male'}
for k in dic:
print(k,dic[k])

2 for+break
for+continue
for+else
eg1:
dic={'name':'egon','age':18,'gender':'male'}
for k in dic:
if k=='age':
print(k,dic[k])
break
else:
print('run')

eg2:
s1=['a','b','c','d']
for i in range(len(s1)):
print(i,s1[i])

eg3:
for i in range(1,5,1):
print(i)

附:range(1,5,1)顧頭不顧尾,列印1,2,3,4,步長也就是間距為1

八 不可變型別和可變型別
可變型別:值改變,但是id不變,證明是改變原值
不可變型別:值改變,id也改變,證明是產生了新值,沒有改變原值,比如int
1 x=10
print(id(x))
x+=1
print(id(x))
結果是:1783262976,1783263008,不相同,表示整型是不可變的
2 sl='a,b,c,d'
print(id(sl))
sl[0]='A'
print(id(sl))
結果是:報錯! 表示字串是不可變的
3 x=5.20
print(id(x))
x+=1
print(id(x))
結果:2191756370400 ,2191756370448,浮點型不可變
4 l=[20,60,70,'s']
print(id(l))
l[3]='x'
print(id(l))
結果;1474444941768 ,1474444941768,列表可變
5 dic={'name':'egon','age':18,'gender':'male'}
print(id(dic))
dic['name']='kevin'
print(id(dic))
結果:2459466620432 , 2459466620432,字典可變
總結:int,float,str不可變
列表、字典可變