寫(xiě)在前面
循環(huán)結(jié)構(gòu)是指在程序中需要反復(fù)執(zhí)行某個(gè)功能而設(shè)置的一種程序結(jié)構(gòu)敞葛,可以看成是一個(gè)條件判斷語(yǔ)句和一個(gè)向回轉(zhuǎn)向語(yǔ)句的組合薯鳍。在我們的生信分析中循環(huán)幾乎無(wú)處不在富寿,畢竟生物體成千上萬(wàn)的基因不能讓生信工作者逐個(gè)的去計(jì)算并可視化见秽。循環(huán)也是各類編程的精髓盔然,脫離了循環(huán)衰伯,代碼將失去意義;學(xué)會(huì)了循環(huán)霞势,省出大把喝咖啡的時(shí)間~
一催植、while循環(huán)
## 最簡(jiǎn)單的示例:
i=0
while i < 10:
i+=1
print(f"這是第{i}次")
通過(guò)while循環(huán)求1~10的和:
i=1
mysum = 0
while i <= 10:
mysum += i
i += 1
print(f"1~10的和是:{mysum}")
通過(guò)while循環(huán)完成猜數(shù)字的程序設(shè)計(jì):
### 用while循環(huán)設(shè)置猜數(shù)字程序
# 生成一個(gè)1~100間的隨機(jī)數(shù)
import random
mynum = random.randint(1,100)
# 設(shè)置條件
mycondition = True
# 記錄次數(shù)
i = 0
# 用過(guò)while循環(huán)生成猜數(shù)字游戲
while mycondition == True:
i += 1
myinput = input("請(qǐng)猜一個(gè)1~100的數(shù)字:")
if int(myinput) == mynum:
print(f"恭喜你在第{i}次猜中了,數(shù)字是{mynum}")
mycondition == False
elif int(myinput) > mynum:
print(f"很遺憾你在第{i}次沒(méi)有猜中刻帚,你的數(shù)字比答案更大潦嘶,請(qǐng)繼續(xù)輸入數(shù)字")
elif int(myinput) < mynum:
print(f"很遺憾你在第{i}次沒(méi)有猜中,你的數(shù)字比答案更小崇众,請(qǐng)繼續(xù)輸入數(shù)字")
通過(guò)while打印九九乘法表:
# 當(dāng)前打印到第幾行
hang = 1
while hang < 10:
# 當(dāng)前打印到第幾列
lie = 1
while lie < hang:
print(f"{lie}*{hang}={lie*hang}",end='\t')
lie += 1
print(f"{lie}*{hang}={lie*hang}")
hang += 1
運(yùn)行效果如下:
二掂僵、for循環(huán)
1航厚、for循環(huán)基本語(yǔ)法
for循環(huán)是一種遍歷循環(huán),其基本語(yǔ)法是
for 臨時(shí)變量 in 序列類型: # 序列類型即為待處理變量/數(shù)據(jù)集
循環(huán)滿足條件時(shí)執(zhí)行的代碼
例如:
for mychar in 'Biomamba':
print(mychar)
則"Biomamba"中的字母會(huì)被依次打出:
利用for循環(huán)來(lái)統(tǒng)計(jì)"Biomamba"一共包含多少字符(其實(shí)有函數(shù)可以直接完成這個(gè)功能锰蓬,這里先小小的挖一個(gè)坑):
chr_numr = 0
for mychar in 'Biomamba':
chr_numr += 1
print(f"'Biomamba'共包含{chr_numr}個(gè)字符")
運(yùn)行結(jié)果:
2幔睬、利用range語(yǔ)句調(diào)用for循環(huán)
range()語(yǔ)句用法一:
括號(hào)中只填寫(xiě)一個(gè)數(shù)字:
for temp_num in range(5):
print(temp_num)
遍歷輸入range(5)的結(jié)果,可以看出range(5)實(shí)際上生成了0~4的這五個(gè)數(shù)字:
range()用法2:
填入兩個(gè)數(shù)字(start, end)芹扭,則生成start至end-1的數(shù)字麻顶,步長(zhǎng)為1
for temp_num in range(1,6):
print(temp_num)
range()用法3:
填入兩個(gè)數(shù)字(start, end, step),則生成start至end-1的數(shù)字舱卡,步長(zhǎng)為3
for temp_num in range(1,10,3):
print(temp_num)
那么辅肾,上面的while循環(huán)打印99乘法表可以改寫(xiě)為,這里寫(xiě)一個(gè)嵌套的while轮锥,大家注意縮進(jìn):
# 當(dāng)前打印到第幾行
hang = 1
for hang in range(1,10):
# 當(dāng)前打印到第幾列
lie = 1
while lie < hang:
print(f"{lie}*{hang}={lie * hang}", end='\t')
lie += 1
print(f"{lie}*{hang}={lie * hang}")
hang += 1
實(shí)際運(yùn)行結(jié)果:
當(dāng)然矫钓,也可以通過(guò)兩個(gè)for循環(huán)的嵌套來(lái)完成:
for hang in range(1,10):
for lie in range(1,hang+1):
print(f"{lie}*{hang}={lie * hang}", end='\t')
print("")
四行代碼就完成了目標(biāo),大家平時(shí)碼代碼的時(shí)候也可以選擇最優(yōu)雅的方式~
三舍杜、break與continue
在實(shí)際的運(yùn)行過(guò)程中新娜,因?yàn)槟承┰蛭覀兛赡懿恍枰阉械难h(huán)都運(yùn)行完畢,這時(shí)需要設(shè)定跳出條件既绩,break和continue就可以幫助我們完成跳出動(dòng)作杯活。
1、continue
continue命令可以跳出當(dāng)次循環(huán)熬词,而直接執(zhí)行下一個(gè)循環(huán)
for temp_num in range(1,5):
print(f"這是第{temp_num}次continue前的語(yǔ)句")
continue
print(f"這是第{temp_num}次continue后的語(yǔ)句")
例如執(zhí)行結(jié)果中只包含continue之前的循環(huán)語(yǔ)句旁钧,且所有的循環(huán)均能執(zhí)行:
2、break
break生效時(shí)互拾,整個(gè)循環(huán)跳出
for temp_num in range(1,5):
print(f"這是第{temp_num}次break前的語(yǔ)句")
break
print(f"這是第{temp_num}次break后的語(yǔ)句")
所以我們的預(yù)設(shè)語(yǔ)句只打印出了第一句
往期回顧
一文了解Python基礎(chǔ):字面量歪今、注釋、變量颜矿、類型寄猩、運(yùn)算符
如何聯(lián)系我們
公眾號(hào)后臺(tái)消息更新不及時(shí),超過(guò)48h便不允許回復(fù)讀者消息骑疆,這里給大家留一下領(lǐng)取資料田篇、免費(fèi)服務(wù)器(有root權(quán)限的共享服務(wù)器,注冊(cè)即送200¥)的微信號(hào),方便各位隨時(shí)交流箍铭、提建議(科研任務(wù)繁重泊柬,回復(fù)不及時(shí)請(qǐng)見(jiàn)諒)。此外呼聲一直很高的交流群也建好了诈火,歡迎大家入群討論:永久免費(fèi)的千人生信兽赁、科研交流群
大家可以閱讀完這幾篇之后添加
給生信入門初學(xué)者的小貼士
如何搜索公眾號(hào)過(guò)往發(fā)布內(nèi)容