1. 程式人生 > 實用技巧 >python_迴圈語句

python_迴圈語句

#迴圈語句
#列印1到10
# print(1,2,3,4,5,6,7,8,9,10)#如果列印大於10個,一個一個輸入麻煩
#用while迴圈實現,當while後面的表示式為真時,則執行while,直達表示式為假時,停止迴圈
# i=1
# while i<=10:
# print(i)
# i+=1#每次自增1,避免死迴圈
#打印出來效果不一樣,全部是換行
# while i<=10:
# print(i,end="")
# i+=1#數字全部連著了,沒有空格
# else:
# print("\n","列印完成")
# while i<=10:
# print(i,sep="",end=" ")#sep引數不起作用原因:print的*objects引數只有一個, 如果有多個就會用seq來分割
# print(str1,str2,sep=' ',end='')
# i+=1#數字全部連著了,沒有空格
# a = [1, 2, 3]
# print(*a, sep='- ')#1- 2- 3
#1到100,10個換行
# while i<=100:
# if i%10==0:
# print(i)
# else:
# print(i,end=" ")
# i+=1
#for 迴圈實現
# for i in range(1,11):
# print(i,end=" ")#1 2 3 4 5 6 7 8 9 10
#當迴圈次數不確定用while,當迴圈次數確定用for

#遍歷方法
#方法1,
# list1=["甲","乙","丙","丁","戊"]
# for i in range(len(list1)):
# print(list1[i],end=" ")
#方法2
# for one in list1:
# print(one,end=" ")#甲 乙 丙 丁 戊

#break跳出迴圈,continue終止本次迴圈,繼續進行下一次迴圈
# for i in range(1,10):
# if i==5:
# # break#終止迴圈,後面的語句不執行1 2 3 4
# # continue#跳出本次迴圈,後面的語句不執行1 2 3 4 6 7 8 9
# pass#佔位符,後面的語句可以執行
# print("幹得不錯哦")
# else:
# print(i,end=" ")
# else:#迴圈本身也可以帶有一個else語句,程式正常執行完會執行else裡面的語句
# print("\n迴圈執行完成")

#用迴圈實現一個定時器
import time
# for i in range(10,-1,-1):
# print(f"倒計時{i}秒")
# time.sleep(1)
#倒計時不在一行中,沒有達到預期結果
# for i in range(10,-1,-1):
# print(f"倒計時{i}秒",end="")#倒計時10秒倒計時9秒倒計時8秒倒計時7秒倒計時6秒倒計時5秒倒計時4秒倒計時3秒倒計時2秒倒計時1秒倒計時0秒
# time.sleep(1)
#後面列印的需要覆蓋前面的,也就是讓游標回到行首
# for i in range(2,-1,-1):
# print("\r",f"倒計時{i}秒",end="",flush=True)##如果倒計時不重新整理,可以加上flush=True
# time.sleep(1)
# else:
# print("\r",f"倒計時結束",end="")
str1='A girl come in, the name is Jack, level 955'
# str2=str1.split("the name is")
# print(str2)
# print(type(str2))
# print(str2[1].split(",")[0].strip())

# def getName(srcstr):
# str2=srcstr.split("the name is")[1]
# str3=str2.split(",")[0].strip()
# return str3
# print(getName(str1))

#可變不可變型別
#可變型別:地址不變時,裡面的值發生改變,但是對應的id不變
#不可變型別:地址不變時,裡面的值發生改變,對應的id也改變
#結論:int、float、str、bool是不可變型別;list是可變型別;dict其中value可以是任意型別但是key必須是不可變型別
#關於Python中的可變物件與不可變物件的區別https://blog.csdn.net/rookinzhang/article/details/80259857
# def t2(para):
# para=3
# print(id(para))
# b='a' #python中,不可變物件的引用稱之為值引用,函式呼叫變數並修改值時,不會改變原變數的值
# print(id(b))
# t2(b)
# print(b)

# def t2(para):
# para[0]=3
# print(id(para))
# b=[1] #python中,可變物件的引用稱之為地址引用,函式呼叫該變數並修改值時,也會改變原變數的值,id 不變
# t2(b)
# print(b)
# print(id(b))

# def t2(para):
# para=3
# print(id(para))
# b=[1] #函式中重新賦值了一個變數,和原變數沒有什麼聯絡
# t2(b)
# print(b)
# print(id(b))

#不可變物件例項
#性質1:
#首先,看一下int型別:
# a=1
# b=1
# c=a+0
# print(a is b)
# print(a is c)
#is是對兩個變數的id是否相等做出判斷如果相等那麼返回true 否則返回false
#可以發現上述程式碼最終結果是列印了兩個true

a1 = [1, 2, 3]
a2 = a1
print(id(a1), id(a2))
# 實際上是a2指向了新的物件,id已經改變。
# 所以現在a2、a1並不是同一物件的兩個引用了,a2變化a1不會改變
a2 = a2 + [4] # 這個等式中,右邊的a2還是和a1的id一樣的,一旦賦值成功,a2就指向新的物件
print(id(1), id(a2)) # 不等,a2的id變化了
print(a2)
print(a1) # [1, 2, 3]沒有變

a1 = [1, 2, 3]
a2 = a1
print(id(a1), id(a2))
a2 += [4] # 相當於呼叫了a2.extend([4]),原地改變並沒有新的物件產生
print(id(a1), id(a2)) # 相等,a2的id沒有變化
print(a2)
print(a1)