當年齡大于60歲的時候退休-------->凡是符合上述條件就執行的動作展開想象,如果制作一道門,這道門就是用上述的條件調控開關的,假設有很多人經過這個們,報上年齡,只要年齡大于60,就退休(門打開,人可以出去),一個接一個地這樣循環下去,突然" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

跟老齊學Python之用while來循環

系統 1889 0

在python中,它也有這個含義,不過有點區別的是,“當...時候”這個條件成立在一段范圍或者時間間隔內,從而在這段時間間隔內讓python做好多事情。就好比這樣一段情景:

while 年齡大于60歲:-------->當年齡大于60歲的時候
??? 退休??????????? -------->凡是符合上述條件就執行的動作
展開想象,如果制作一道門,這道門就是用上述的條件調控開關的,假設有很多人經過這個們,報上年齡,只要年齡大于60,就退休(門打開,人可以出去),一個接一個地這樣循環下去,突然有一個人年齡是50,那么這個循環在他這里就停止,也就是這時候他不滿足條件了。

這就是while循環。寫一個嚴肅點的流程,可以看下圖:

跟老齊學Python之用while來循環_第1張圖片

再做猜數字游戲

本教程有一講,是跟看官一同做一個小游戲,在里面做了一個猜數的游戲,當時遇到了一個問題,就是只能猜一兩次,如果猜不到,程序就不能繼續運行了。

前不久,有一個在校的大學生朋友(他叫李航),給我發郵件,讓我看了他做的游戲,能夠實現多次猜數,直到猜中為止。這是一個多么喜歡學習的大學生呀。

我在這里將他寫的程序恭錄于此,單元李航同學不要見怪,如果李航同學認為此舉侵犯了自己的知識產權,可以告知我,我馬上撤下此代碼。

復制代碼 代碼如下:

#! /usr/bin/env python
#coding:UTF-8??????????

import random

i=0
while i < 4:
??? print'********************************'
??? num = input('請您輸入0到9任一個數:')?????? #李同學用的是python3

??? xnum = random.randint(0,9)

??? x = 3 - i

??? if num == xnum:
??????? print'運氣真好,您猜對了!'
??????? break
??? elif num > xnum:
??????? print'''您猜大了!\n哈哈,正確答案是:%s\n您還有%s次機會!''' %(xnum,x)
??? elif num < xnum:
??????? print'''您猜小了!\n哈哈,正確答案是:%s\n您還有%s次機會!''' %(xnum,x)
??? print'********************************'

??? i += 1

我們就用這段程序來分析一下,首先看while i<4,這是程序中為猜測限制了次數,最大是三次,請看官注意,在while的循環體中的最后一句:i +=1,這就是說每次循環到最后,就給i增加1,當bool(i<4)=False的時候,就不再循環了。

當bool(i<4)=True的時候,就執行循環體內的語句。在循環體內,讓用戶輸入一個整數,然后程序隨機選擇一個整數,最后判斷隨機生成的數和用戶輸入的數是否相等,并且用if語句判斷三種不同情況。

根據上述代碼,看官看看是否可以修改?

為了讓用戶的體驗更爽,不妨把輸入的整數范圍擴大,在1到100之間吧。

復制代碼 代碼如下:

num_input = raw_input("please input one integer that is in 1 to 100:")??? #我用的是python2.7,在輸入指令上區別于李同學

程序用num_input變量接收了輸入的內容。但是,請列位看官一定要注意,看到這里想睡覺的要打起精神了,我要分享一個多年編程經驗,請牢記:任何用戶輸入的內容都是不可靠的。這句話含義深刻,但是,這里不做過多的解釋,需要各位在隨后的編程生涯中體驗了。為此,我們要檢驗用戶輸入的是否符合我們的要求,我們要求用戶輸入的是1到100之間的整數,那么就要做如下檢驗:

輸入的是否是整數
如果是整數,是否在1到100之間。
為此,要做:

復制代碼 代碼如下:

if not num_input.isdigit():???? #str.isdigit()是用來判斷字符串是否純粹由數字組成
??? print "Please input interger."
elif int(num_input)<0 and int(num_input)>=100:
??? print "The number should be in 1 to 100."
else:
??? pass?????? #這里用pass,意思是暫時省略,如果滿足了前面提出的要求,就該執行此處語句

再看看李航同學的程序,在循環體內產生一個隨機的數字,這樣用戶每次輸入,面對的都是一個新的隨機數字。這樣的猜數字游戲難度太大了。我希望是程序產生一個數字,直到猜中,都是這個數字。所以,要把產生隨機數字這個指令移動到循環之前。

復制代碼 代碼如下:

import random

number = random.randint(1,100)

while True:???????????? #不限制用戶的次數了
??? ...

觀察李同學的程序,還有一點需要向列位顯明的,那就是在條件表達式中,兩邊最好是同種類型數據,上面的程序中有:num>xnum樣式的條件表達式,而一邊是程序生成的int類型數據,一邊是通過輸入函數得到的str類型數據。在某些情況下可以運行,為什么?看官能理解嗎?都是數字的時候,是可以的。但是,這樣不好。

那么,按照這種思路,把這個猜數字程序重寫一下:

復制代碼 代碼如下:

#!/usr/bin/env python
#coding:utf-8

import random

number = random.randint(1,100)

guess = 0

while True:

??? num_input = raw_input("please input one integer that is in 1 to 100:")
??? guess +=1

??? if not num_input.isdigit():
??????? print "Please input interger."
??? elif int(num_input)<0 and int(num_input)>=100:
??????? print "The number should be in 1 to 100."
??? else:
??????? if number==int(num_input):
??????????? print "OK, you are good.It is only %d, then you successed."%guess
??????????? break
??????? elif number>int(num_input):
??????????? print "your number is more less."
??????? elif number ??????????? print "your number is bigger."
??????? else:
??????????? print "There is something bad, I will not work"

以上供參考,看官還可改進。

break和continue

break,在上面的例子中已經出現了,其含義就是要在這個地方中斷循環,跳出循環體。下面這個簡要的例子更明顯:

復制代碼 代碼如下:

#!/usr/bin/env python
#coding:utf-8

a = 8
while a:
??? if a%2==0:
??????? break
??? else:
??????? print "%d is odd number"%a
??????? a = 0
print "%d is even number"%a

a=8的時候,執行循環體中的break,跳出玄幻,執行最后的打印語句,得到結果:

復制代碼 代碼如下:

8 is even number

如果a=9,則要執行else里面的的print,然后a=0,循環就在執行一次,又break了,得到結果:

復制代碼 代碼如下:

9 is odd number
0 is even number

而continue則是要從當前位置(即continue所在的位置)跳到循環體的最后一行的后面(不執行最后一行),對一個循環體來講,就如同首尾銜接一樣,最后一行的后面是哪里呢?當然是開始了。

復制代碼 代碼如下:

#!/usr/bin/env python
#coding:utf-8

a = 9
while a:
??? if a%2==0:
??????? a -=1
??????? continue??? #如果是偶數,就返回循環的開始
??? else:
??????? print "%d is odd number"%a #如果是奇數,就打印出來
??????? a -=1

其實,對于這兩東西,我個人在編程中很少用到。我有一個固執的觀念,盡量將條件在循環之前做足,不要在循環中跳來跳去,不僅可讀性下降,有時候自己也糊涂了。

復制代碼 代碼如下:

while...else

這兩個的配合有點類似if ... else,只需要一個例子列為就理解了,當然,一遇到else了,就意味著已經不在while循環內了。

復制代碼 代碼如下:

#!/usr/bin/env python

count = 0
while count < 5:
??? print count, " is? less than 5"
??? count = count + 1
else:
??? print count, " is not less than 5"

執行結果:

復制代碼 代碼如下:

0 is less than 5
1 is less than 5
2 is less than 5
3 is less than 5
4 is less than 5
5 is not less than 5


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 色婷婷影院 | 美女视频黄a视频免费全过程 | 草草免费观看视频在线 | 亚洲欧美激情视频 | 91精品久久久久久久久网影视 | 国产乱人乱精一区二区视频密 | 久久精品亚洲成在人线av网址 | 久草小视频 | 久久久久中文 | 国产高清www免费视频 | 欧美xxxxx69xxxx| 亚洲精品免费在线视频 | 免费视频不卡一区二区三区 | 色中色在线视频 | 91麻豆精品一二三区在线 | 亚洲夜夜爱 | 日韩在线观看免费 | 成人国产精品视频 | 福利一区在线视频 | 狠狠色丁香婷婷 | 欧美精品99久久久久久人 | 亚洲91在线| 99久久人妻无码精品系列性欧美 | 国产黄色2 | 99久久久无码国产精品 | 免费性生活视频 | 福利在线播放 | 国产精品久久久久久久免费 | 精品乱码| 欧美日韩精品一区二区三区蜜桃 | 亚洲国产成人久久综合碰 | 日日爽视频 | 欧美一级网 | 欧美日韩在线免费观看 | 美女求操| 欧美受xxxx黑人xyx爽 | 亚洲国产精品网站 | 久久中文字幕美谷朱里 | 综合精品在线 | 久久精品成人免费国产片桃视频 | 中文字幕综合在线观看 |