第009講:了不得的分支和循環3

 

 

   me:5次python

標準答案:5 次,由於從 0 開始,到 10 結束,步進爲 2。數組

1. 下面的循環會打印多少次"I Love FishC"?服務器

 

  me:錯誤,循環應該使用的是一個數組,好比range()函數

標準答案:會報錯,上節課的課後習題咱們提到了 in 是「成員資格運算符」,而不是像 C 語言那樣去使用 for 語法。Python 的 for 更像腳本語言的 foreach。測試

2.回顧一下 break 和 continue 在循環中起到的做用?操作系統

  me:break:終止循環,跳出循環3d

    continue:跳出本輪循環,進入進入下一輪循環blog

  標準答案:break語句的做用是終止當前循環,跳出循環體。
        continue語句的做用是終止本輪循環並開始下一輪循環(這裏要注意的是:在開始下一輪循環以前,會先測試循環條件)。遊戲

3.字符串

 

4. 請問 range(10) 生成哪些數?

  me:生成0-9之間的整數

  標準答案:會生成 range(0, 10),list(range(0, 10)) 轉換成列表是:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],注意不包含 10 哦。

5.目測如下程序會打印什麼?

 

   me:2和3

  標準答案:

 

 

6.什麼狀況下咱們要使循環永遠爲真?

  標準答案:while Ture:
            循環體
    
一樣用於遊戲實現,由於遊戲只要運行着,就須要時刻接收用戶輸入,所以使用永遠爲真確保遊戲「在線」。操做系統也是一樣的道理,時刻待命,操做系統永遠爲真的這個循環叫作消息循環。另外,許多通信服務器的客戶端/服務器系統也是經過這樣的原理來工做的。
     
因此永遠爲「真」雖然是「死循環」,但不必定是壞事,再說了,咱們能夠隨時用 break 來跳出循環!

7.【學會提升代碼的效率】你的以爲如下代碼效率方面怎樣?有沒有辦法能夠大幅度改進(仍然使用while)?

 

   me:

i=0
string="ILoveFishC.com"
len_str=len(string)
while i < len_str:
	print(i)
	i += 1

  標準答案:這段代碼之因此「效率比較低」是由於每次循環都須要調用一次 len() 函數(咱們尚未學到函數的概念,小甲魚這裏爲零基礎的朋友形象的解釋下:就像你打遊戲打得正HIGH的時候,老媽讓你去買鹽......你有兩種選擇,一次買一包,一天去買五次,或者一次性買五包回來,老媽要就直接給她。)

  

i = 0
string = 'ILoveFishC.com'
length = len(string)
while i < length:
    print(i)
    i += 1  

  

 

動動手

0.

 

   me:

i=1
password=input("請輸入密碼:")
while i < 3:
	if password.find("*") != -1:
		password=input("密碼中不能含有「*」號!您還有 " + str(3-i+1) +" 次機會!請您輸入密碼:")
		if password == "FishC.com":
			print("密碼正確,進入程序......")
			break
	elif password == "FishC.com":
		print("密碼正確,進入程序......")
		break
	else:
		password=input("密碼輸入錯誤!您還有 " + str(3-i) + " 次機會!請您輸入密碼:")
		if password == "FishC.com":
			print("密碼正確,進入程序......")
			break
		i += 1

 

  標準答案:

  

count = 3
password = 'FishC.com'

while count:
    passwd = input('請輸入密碼:')
    if passwd == password:
        print('密碼正確,進入程序......')
        break
    elif '*' in passwd:
        print('密碼中不能含有"*"號!您還有', count, '次機會!', end=' ')
        continue
    else:
        print('密碼輸入錯誤!您還有', count-1, '次機會!', end=' ')    
    count -= 1

  

 

1.

 

   me:

for i in range(100,999):
	stri=str(i)
	if i == int(stri[0])**3 + int(stri[1])**3 + int(stri[2])**3:
		print(i,end=(","))

  標準答案:

for i in range(100, 1000):
    sum = 0
    temp = i
    while temp:
        sum = sum + (temp%10) ** 3
        temp //= 10         # 注意這裏要使用地板除哦~
    if sum == i:
        print(i)

  

2.

 

   me:

  標準答案:

print('red\tyellow\tgreen')
for red in range(0, 4):
    for yellow in range(0, 4):
        for green in range(2, 7):
            if red + yellow + green == 8:
                # 注意,下邊不是字符串拼接,所以不用「+」哦~
                print(red, '\t', yellow, '\t', green)

  註釋:range(2, 7) 是產生 [2, 3, 4, 5, 6] 這 5 個數,綠球不能是 1 個,由於若是綠球是 1 個的話,紅球 + 黃球須要有 7 個才能符合題意,而紅球和黃球每種只有 3 個,所以是 range(2, 7)

相關文章
相關標籤/搜索