Python基礎二--基本控制語句

來源:互聯網
上載者:User

基本接觸每一種語言,都需要做的:1.print 一個"Hello world!" 2.瞭解基本的資料類型 3.學習控制語句。

當我們學習控制語句,一般都離不開if,for ,while,switch(case)。本文就做一個簡單的介紹python的基本控制語句,其中我們用if while來做一個經典的“猜數字遊戲”,if for來做一個“輸出完美數”。
在此之前,對於一些沒用過python的同學而熟悉c/c++等用{}來做塊的要注意了,python的是利用縮排來分塊的,小小煩惱,但是習慣一段時間還是可以接受的,這樣的好處就是從直觀上看來大家的代碼是基本一樣的格式,所謂的簡單易讀。

來說一下縮排的煩惱,屬於我們初學者的煩惱。

a=3b=5if a>b:   print aelse:   print b print a+b  
上面的代碼所做的就是輸出a,b中最大,最後輸出a+b,注意到最後一行print a+b沒有頂格,所以就error了,縮排問題。

之後,我們來說一下縮排的好處,如果你寫過C/C++類似的

你會不會犯過這個錯誤

#include<iostream>#include<cstdio>#include<cstring>using namespace std;int main(){       int a=160,b=170;     //1案例,當a比b大時候,如果a為奇則輸出a,否則輸出Error,這樣是沒有問題的    if(a>b)       if(a&1)        cout<<a;       else        cout<<"Error";     else        cout<<b;         //2案例,當a比b大時候,如果a為奇則輸出a,當b不比a小輸出a,這樣就是所謂的懸掛else        //這程式第二個案例就是沒有輸出,而不是 170。在python,這個問題就不會出現了!     if(a>b)           if(a&1)             cout<<a;          else             cout<<b;         return 0; } 




好了,本文的主要是講述基本控制語句

首先,大家都寫過的輸出a,b最大者,用虛擬碼看來就是

if a>b   print aelse   print bendif
而這裡就是用到了最基本的if條件陳述式,python中的if的用法

if expression:  #注意到  ":",漏了可不行,在寫指令碼時時常範的小錯誤    if_suit    
example

age=19if age>18:     print 'You are  adult!'
result

You are  adult!

當然,有if自然有else

if expression:      if_suitelse:    else_suit
example

IQ=250if IQ>250:    print "Your IQ is very high!"else:    print "Normal guy!"

result

Normal guy!

還有不能少的else if,但是python的elseif寫的是和shell一樣的elfi

example

IQ=250if IQ>250:    print "Your IQ is very high!"elif IQ==250:    print "You are 250!" else:    print "Normal guy!"
result

You are 250!

(以上例子內容僅供娛樂,不要認真,基礎總是枯燥的,多多調侃自己找樂子!)

接下來是while了,基本用法就是

while expression:        while_suit
exmple

cnt=0while cnt<5:    print cnt    cnt+=1
result

01234


另外,有while,我們還必須提到break,break就是打破迴圈嘛,和c++基本一樣,舉個例子

cnt=1while cnt<10:    print cnt    if cnt%2==0:         break;    cnt+=1
這時候結果就是

12
猜數字大家都清楚,就是在設定一個隨機數作為答案(也可以手動設定),之後輸入數字,系統判別,大了或者小了,如果相等就跳出迴圈

code

#!/usr/bin/env python# coding=utf-8import randoma=1b=1000ans=random.randint(a,b)cnt=0while True :    num=int(raw_input('Guess the number:'))    cnt+=1    if num==ans:          print "Great!%d is the answer!"%num          print "You guessed %d times"%cnt          break     elif num>ans:          print "%d is greater than the ans"%num     else:          print "%d is less than the ans"%num


其中要用到random,大概的用法就是從a,b之間產生一個隨機數,如例子所說

result

Guess the number:00 is less than the ansGuess the number:10001000 is greater than the ansGuess the number:500500 is greater than the ansGuess the number:250250 is greater than the ansGuess the number:125125 is less than the ansGuess the number:185185 is greater than the ansGuess the number:155155 is less than the ansGuess the number:170170 is less than the ansGuess the number:177177 is greater than the ansGuess the number:173173 is greater than the ansGuess the number:172172 is greater than the ansGuess the number:171Great!171 is the answer!You guessed 12 times

這個二分還是不錯的^_^,懂二分的程式員是很值錢的,回想五月中的廣東省賽,我們就是死在了一條二分題上,罰時太多了!遺憾鐵牌。

for

實際上,python的for 跟c++的for感覺是不一樣的,他更像for each迭代。基本用法就是:

for iterating_var in sequence:   statements(s)

舉個例子來看。

ProLan=['C','CPP','JAVA','PYTHON']for item in ProLan:       print item
這樣輸出的結果是:

CCPPJAVAPYTHON
如果不想換行,那麼就在item後加入" ,"

ProLan=['C','CPP','JAVA','PYTHON']for item in ProLan:       print item,
結果就是

C CPP JAVA PYTHON
還有我們想做

for(int i=0;i<100;i++)    printf ("%d ",i);

這種事情,在python要這麼寫

for i in range(0,100):       print i,
到此為止,我們就可以做事情了,輸出0~10000 完美數

首先,先科普一下完美數,完美數就是所有非本身的因子加起來為本身,比如6就是一個完美數,6的非本身因子有1,2,3,1+2+3=6。

我們可以用for 和 if 來實現

一個非常粗糙的方法,完全講不算是演算法

#!/usr/bin/env python# coding=utf-8for i in range(1,10000):    fact=0    for j in range(1,i):        if i%j==0:            fact+=j    if fact==i:        print i

一個稍微的改良nlogn,這個大家都懂,就不廢話了。

#!/usr/bin/env python# coding=utf-8import mathfor i in range(1,10000):    fact=1    end=int(math.sqrt(i))+1    for j in range(2,end):        if i%j==0:            fact+=j            if j*j!=i:                fact+=i/j;    if fact==i:        print i

result

16284968128

另外,還值得一提的是,還有 for..else, While ...else

對於我們這種習慣寫C/C++的人來說,甚是“新鮮”!不過我覺得還是不要用好~多寫點,避免混淆啊!親!

舉個例子

for i in range(1,10):   if i&1:       breakelse:   print "for-else"
這樣break掉就不會走else,也就是正常結束才會走else.實際上我理解為

for i in range(1,10)

 //do somting

if i==10

  //do else

即如果是

for i in range(1,10):   if i>250:       breakelse:   print "for-else"
這樣就會輸出

for-else
while..else也如此。

至此,基本上的控制語句已經講完了。

在python 2.X中是沒有case的,這不知道是好是壞,我們只能用

if..elif..else來代替了!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.