閑著也是閑著:Python for 循環(huán)和while循環(huán)

我學(xué)習(xí)Python主要是想實現(xiàn)兩個功能:一是網(wǎng)絡(luò)爬蟲二是自動化任務(wù)實現(xiàn)。大數(shù)據(jù)的實現(xiàn)離不開python,更何況還有AI學(xué)習(xí)等等,總的來說,python的前景非常值得期待。

今天重點來學(xué)習(xí)Python 的for和While。

for 循環(huán)

使用for循環(huán)還可以對一竄字符進(jìn)行單個獲?。?/p>

chinese_zodiac = "鼠?;⑼谬埳唏R羊猴雞狗豬"
for cz in chinese_zodiac:
    print(cz)

配合range語法:

# range(start, stop[, step])
# start: 計數(shù)從 start 開始。默認(rèn)是從 0 開始。例如range(5)等價于range(0, 5);
# stop: 計數(shù)到 stop 結(jié)束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]沒有5
# step:步長,默認(rèn)為1。例如:range(0, 5) 等價于 range(0, 5, 1)
>>>range(10)        # 從 0 開始到 10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 11)     # 從 1 開始到 11
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> range(0, 30, 5)  # 步長為 5
[0, 5, 10, 15, 20, 25]
>>> range(0, 10, 3)  # 步長為 3
[0, 3, 6, 9]
>>> range(0, -10, -1) # 負(fù)數(shù)
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> range(0)
[]
>>> range(1, 0)
[]

下面的程序?qū)崿F(xiàn)年份,后面自動帶上生肖,如: 2008 年的生肖是 鼠

for year in range(2008, 2020):
    print("%s 年的生肖是 %s" % (year, chinese_zodiac[(year % 12)-4]))

全部代碼:

chinese_zodiac = "鼠?;⑼谬埳唏R羊猴雞狗豬"
for cz in chinese_zodiac:
    print(cz)

for i in range(1, 13):
    print(i)

for year in range(2008, 2020):
    print("%s 年的生肖是 %s" % (year, chinese_zodiac[(year % 12)-4]))

最終輸出:

鼠
牛
虎
兔
龍
蛇
馬
羊
猴
雞
狗
豬
1
2
3
4
5
6
7
8
9
10
11
12
2008 年的生肖是 鼠
2009 年的生肖是 牛
2010 年的生肖是 虎
2011 年的生肖是 兔
2012 年的生肖是 龍
2013 年的生肖是 蛇
2014 年的生肖是 馬
2015 年的生肖是 羊
2016 年的生肖是 猴
2017 年的生肖是 雞
2018 年的生肖是 狗
2019 年的生肖是 豬

下面我們將結(jié)合for 和if ,制作一個輸入出生月日就能返回星座的程序:

首先,我們列出所有星座:

zodiac_name = ('摩羯座', '水瓶座', '雙魚座', '白羊座', '金牛座', '雙子座',
               '巨蟹座', '獅子座', '處女座', '天秤座', '天蝎座', '射手座')

接著,我們要列出每個星座終結(jié)的月日,以便跟輸入的月日做判斷:

zodiac_day = ((1, 20), (2, 19), (3, 21), (4, 21), (5, 22), (6, 22),
              (7, 23), (8, 23), (9, 23), (10, 23), (11, 23), (12, 23))

也就是說,小于1月20日的是摩羯座,小于2月19日的是水瓶座。

那么我們需要用戶生日月份和日期,由用戶自己來輸入:

int_month = int(input('請輸入生日月份:'))
int_day = int(input('請輸入生日日期:'))

最后,我們利用用戶輸入的數(shù)字和各個星座終結(jié)的日期做比較,使用for循環(huán)和if語句配合

for i in range(len(zodiac_day)):
    if zodiac_day[i] >= (int_month, int_day):
        print(zodiac_name[i])
        break

現(xiàn)在運行程序,基本沒什么問題,但是細(xì)心的用戶可能會發(fā)現(xiàn),12月23日以后的 ,在這個循環(huán)里面并沒有寫出來。如果我們輸入一個12月25日出生的,程序會提示:

請輸入生日月份:12
請輸入生日日期:25

進(jìn)程已結(jié)束,退出代碼 0

所以我們必須使用一個elif補充說明一下:

elif int_month == 12 and int_day > 23:
    print(zodiac_name[0])
    break

while循環(huán)

while True: 表示一直循環(huán)運行下方的代碼:

一般配合if和break跳出循環(huán)。

num = 5
while True:
    print(num)
    num += 1
    if num > 10:
        break

也可以配合continue在當(dāng)前循環(huán)體上暫停一次:

num = 4
while True:
    num += 1
    if num == 7:
        continue
    if num > 10:
        break
    print(num)

現(xiàn)在我們再回到那個求星座的程序上,如果使用while語句,該如何寫這段代碼呢?

zodiac_name = ('摩羯座', '水瓶座', '雙魚座', '白羊座', '金牛座', '雙子座',
               '巨蟹座', '獅子座', '處女座', '天秤座', '天蝎座', '射手座')
zodiac_day = ((1, 20), (2, 19), (3, 21), (4, 21), (5, 22), (6, 22),
              (7, 23), (8, 23), (9, 23), (10, 23), (11, 23), (12, 23))
int_month = int(input('請輸入生日月份:'))
int_day = int(input('請輸入生日日期:'))

前面的保持一樣。

我們知道while條件為真時,while就繼續(xù)運行,直到條件為否。

那么我們就讓它繼續(xù)運行:while zodiac_day[n] < (int_month, int_day):

日期順序就是從小排到大,循環(huán)就是拿它來進(jìn)行比較,直到輸入日期大于某個日期,循環(huán)終結(jié)打印星座名稱即可:

n = 0
while zodiac_day[n] < (int_month, int_day):
    if int_month == 12 and int_day > 23:
        break
    n += 1
print(zodiac_name[n])

完全代碼如下:

zodiac_name = ('摩羯座', '水瓶座', '雙魚座', '白羊座', '金牛座', '雙子座',
               '巨蟹座', '獅子座', '處女座', '天秤座', '天蝎座', '射手座')
zodiac_day = ((1, 20), (2, 19), (3, 21), (4, 21), (5, 22), (6, 22),
              (7, 23), (8, 23), (9, 23), (10, 23), (11, 23), (12, 23))
int_month = int(input('請輸入生日月份:'))
int_day = int(input('請輸入生日日期:'))

# for i in range(len(zodiac_day)):
#     if zodiac_day[i] >= (int_month, int_day):
#         print(zodiac_name[i])
#         break
#     elif int_month == 12 and int_day > 23:
#         print(zodiac_name[0])
#         break

n = 0
while zodiac_day[n] < (int_month, int_day):
    if int_month == 12 and int_day > 23:
        break
    n += 1
print(zodiac_name[n])

謝謝大家!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容