Python3.5筆記——第6章 條件、循環(huán)和其他語句

Python3.5筆記

第六章 條件朱嘴、循環(huán)和其他語句

import語句的使用

格式1:直接導(dǎo)入

import modelname

示例:

import math
r=5
print(math.pi)
print("半徑是5的圓的面積是:%.2f"%(math.pi*r**2))

輸出:

3.141592653589793
半徑是5的圓的面積是:78.54

格式2:從modelA導(dǎo)入modelB

from modelname import sub_modelname
#另一種導(dǎo)入包的方式
from math import pi
r=5
print(pi)#這種導(dǎo)入方式糕珊,可以直接使用sub_modelname崖堤,而不必使用modelname
print("半徑是5的圓的面積是:%.2f"%(pi*r**2))

工作原理

當(dāng)我們使用import語句時(shí),Python解釋器如何找到對應(yīng)的文件柠并?

這涉及Python的搜索路徑究飞,搜索路徑由一系列目錄名組成,Python解釋器會(huì)依次從這些目錄中尋找引入的模塊堂鲤。

看起來很像環(huán)境變量亿傅,事實(shí)上可以通過定義環(huán)境變量的方式定義搜索路徑,搜索路徑是在Python編譯或安裝時(shí)確定的瘟栖,

被存儲在sys的path變量中葵擎。查看搜索路徑的方式如下:

import sys
print(sys.path)

輸出:

['D:\\pyspace\\hellopython', 'D:\\pyspace\\hellopython', 'D:\\Program Files\\Python\\python35.zip', 'D:\\Program Files\\Python\\DLLs', 'D:\\Program Files\\Python\\lib', 'D:\\Program Files\\Python', 'D:\\Program Files\\Python\\lib\\site-packages', 'D:\\Program Files\\JetBrains\\PyCharm 2018.1.4\\helpers\\pycharm_matplotlib_backend']

可以通過修改path變量改變搜索路徑的位置。

導(dǎo)入多個(gè)模塊

導(dǎo)入多個(gè)模塊時(shí)半哟,只需要將導(dǎo)入的多個(gè)模塊中間用逗號,分隔開就可以了酬滤。如:

from math import pi,sin

導(dǎo)入全部

from math import *

起別名

可以對導(dǎo)入導(dǎo)入的模塊起別名,直接在模塊名后加as 別名即可寓涨。如:

from math import pi as p
print(p)

輸出

3.141592653589793

使用逗號輸出

可以使用逗號輸出多個(gè)表達(dá)式盯串,所以不使用格式化的方式也可以同時(shí)輸出文本和變量值。如:

print("我是小智","戒良,我來自未來")
name = "我是小智"
introduce = ",我是一名工程師"
comefrome = ",我來自未來"
print(name,introduce,comefrome)

輸出:

我是小智 体捏,我來自未來
我是小智 ,我是一名工程師 ,我來自未來

花式賦值

序列解包

在Python中,交換所作的事情叫做序列解包糯崎,或可迭代解包几缭。即將多個(gè)值的序列解開,然后放到變量的序列中沃呢。

通過序列解包年栓,可以同時(shí)對多個(gè)變量賦值。如:

x,y,z = 1,2,3
print("x=",x)
print("y=",y)
print("z=",z)
print(x,y,z)

a,b,c = "a","b","c"
print(a,b,c)

student = {'name':"小明",'age':23}
#Python 字典 popitem() 方法隨機(jī)返回并刪除字典中的一對鍵和值(一般刪除末尾對)薄霜。
#如果字典已經(jīng)為空某抓,卻調(diào)用了此方法,就報(bào)出KeyError異常惰瓜。
#返回一個(gè)鍵值對(key,value)形式否副。
key,value = student.popitem()
print(key)
print(value)
print(student)

輸出:

x= 1
y= 2
z= 3
1 2 3

a b c

name
小明
{'age': 23}

需要注意的是,解包序列中的元素?cái)?shù)量必須和放置在賦值符號"="左邊的數(shù)量完全一致鸵熟,否則Python會(huì)在賦值時(shí)引發(fā)異常副编。如:

x,y,z = 1,2
print(x,y,z)

輸出

ValueError: not enough values to unpack (expected 3, got 2)

鏈?zhǔn)劫x值

可以通過多個(gè)等式為多個(gè)變量賦同一個(gè)值,這種方法叫做鏈?zhǔn)劫x值。

鏈?zhǔn)劫x值是將同一個(gè)值賦給多個(gè)變量痹届,但是要注意的是呻待,當(dāng)其中一個(gè)變量的值發(fā)生改變后,另外變量的值并不會(huì)自動(dòng)隨之改變队腐,而是仍然保持原來的值不變蚕捉。如:

x=y=z=123
print(x,y,z)
y=456
print(x,y,z)

輸出

123 123 123
123 456 123

增量賦值

使用賦值運(yùn)算符時(shí),沒有將表達(dá)式寫成類似x=x+1的形式柴淘,而是將表達(dá)式放置在賦值運(yùn)算符(=)的左邊迫淹,如:將x=x+1寫成

x+=1,這種寫法在Python中稱之為增量賦值为严。即先對變量進(jìn)行"="左邊的運(yùn)算敛熬,然后再將運(yùn)算完的結(jié)果賦給變量。如:

x=0
x+=1
print(x)
x*=10
print(x)

輸出

1
10

增量賦值不僅使用于數(shù)字第股,同樣適用于字符串应民,如:

str='hello'
str+=' world'
print(str)
str*=2
print(str)

輸出

hello world
hello worldhello world

語句塊

在Python中,冒號(:)用來標(biāo)識語句塊的開始夕吻,語句塊中每一個(gè)語句都需要縮進(jìn)(縮進(jìn)量相同)诲锹。當(dāng)退回到和已閉合的塊一樣的縮進(jìn)量時(shí),表示當(dāng)前語句塊已經(jīng)結(jié)束了涉馅。如:

a=3
if a==3:
    print('a==3')
    print('這是一個(gè)語句塊')
a=4#這時(shí)語句塊已經(jīng)結(jié)束了

輸出:

a==3
這是一個(gè)語句塊

Python中的布爾值

在Python中归园,標(biāo)準(zhǔn)的布爾值有:True,False。下面的值做為布爾表達(dá)式時(shí)稚矿,會(huì)被看作假庸诱。

False None () "" 0 [] {}

在Python中,除了標(biāo)準(zhǔn)值False和None盐捷、所有類型的數(shù)字0(包括浮點(diǎn)型偶翅,長整形和其他類型)、空序列(如:空字符串碉渡、空元組和空列表)以及空字典都為假。其他的值都為真母剥,包括原生的布爾值True滞诺。

標(biāo)準(zhǔn)值False=0,True=1

print(True == 0)
print(True == 1)
print(False == 0)
print(False + True + 2)
print(False)
print(True)

輸出:

False
True
True
3
False
True

bool()函數(shù)用來轉(zhuǎn)換表達(dá)式為布爾值环疼,如:

print(bool('abc'))
print(bool(0))

輸出:

True
False

IF ELSE ELIF 語句的寫法

在Python中习霹,if語句后面不需要跟括號(),只需要跟空格炫隶,然后加條件表達(dá)式即可淋叶。else 語句不是獨(dú)立語句,只能做為if語句的一部分伪阶。elif是else if的簡寫煞檩,在Python中处嫌,使用elif代替其他語句的else if。如:

#! /usr/bin/python3 #建議加上這一句斟湃,否則代碼移植到linux時(shí)熏迹,會(huì)找不到解釋器
# -*- coding:UTF-8 -*- #建議加上這一句,否則有中文時(shí)容易出現(xiàn)亂碼
#greeting = 'hello'
greeting = 'hello1'
#greeting = 'hello2'
if greeting == 'hello':
    print('hello的長度是:%d'%len(greeting))
elif greeting == 'hello1':
    print('greeting變量的值是:%s'%greeting)
else:
    print('字符串不等于hello')

輸出:

#hello的長度是:5
greeting變量的值是:hello1
#字符串不等于hello

同一運(yùn)算符 IS

IS運(yùn)算符用來判斷兩個(gè)對象是否等同(是否為同一個(gè)對象)凝赛,使用==運(yùn)算符用來判斷兩個(gè)對象是否相等注暗。如:

x=y=(1,2,3)
z=(1,2,3)
print(x is y)
print(x is z)

輸出:

True
False

比較字符串和序列

字符串可以按照字母排序順序進(jìn)行比較,也可以對列表進(jìn)行比較操作墓猎,也可以對嵌套列表進(jìn)行比較操作捆昏。如:

print([1,2] < [2,1])
print([1,2] == [1,2])

輸出:

True
True

assert 斷言

在Python中,assert語句的格式如下:

if not condition:
    crash program

為什么需要這樣的代碼呢毙沾?

在沒有完善一個(gè)程序之前骗卜,你不知道程序會(huì)在哪里出錯(cuò),與其在運(yùn)行時(shí)崩潰搀军,不如在遇到錯(cuò)誤時(shí)崩潰膨俐。

使用assert,要注意以下幾點(diǎn):

1罩句、assert斷言用來聲明某個(gè)條件是真的焚刺。

2、如果你非常確信门烂,你使用的列表中至少有一個(gè)元素乳愉,想要檢驗(yàn)這一點(diǎn),并在它非真時(shí)引發(fā)一個(gè)錯(cuò)誤屯远,那么assert語句是應(yīng)用在這種情形下的理想語句蔓姚。

3、當(dāng)assert語句失敗時(shí)慨丐,會(huì)引發(fā)一個(gè)AssertionError坡脐。

x=3
#assert x<0,'x is not zero not negative'
assert x%2==0,'x不是偶數(shù)'

輸出

    assert x%2==0,'x不是偶數(shù)'
AssertionError: x不是偶數(shù)

幾種循環(huán)的寫法

while循環(huán)

while語句用于循環(huán)執(zhí)行程序,以處理需要重復(fù)處理的任務(wù)房揭。執(zhí)行的流程為:當(dāng)while條件為True時(shí)备闲,執(zhí)行循環(huán)體,直到while條件為False時(shí)捅暴,退出循環(huán)恬砂,基本語法形式如下:

while 判斷條件:
    執(zhí)行語句
    迭代器

示例:

x=0
while x<5:
    print('x=',x)
    x+=1

輸出:

x= 0
x= 1
x= 2
x= 3
x= 4

for循環(huán)

for循環(huán)可以遍歷任何序列的項(xiàng)目,如一個(gè)列表或字符串蓬痒。for循環(huán)的語法格式如下:

for iterator_var in sequence
statements

sequence是任意序列泻骤,iterator_var是序列中要遍歷的元素,statements是待執(zhí)行的語句塊。

print('---------循環(huán)字符串-------------')
for letter in 'goods':
    print('當(dāng)前字母是:',letter)
print('---------循環(huán)數(shù)字序列-------------')
numbers = [1,2,3,4,5]
for number in numbers:
    print('當(dāng)前數(shù)字是:%d'%number)
print('---------循環(huán)字典-------------')
dictionary = {'name':'小明','age':23,'性別':'男','愛好':'女'}
for dict in dictionary:
    print('當(dāng)前字典的值是:%s=%s'%(dict,dictionary[dict]))
print('---------循環(huán)字典,使用序列解包-------------')
for key,value in dictionary.items():
    print('%s:%s'%(key,value))    

輸出:

---------循環(huán)字符串-------------
當(dāng)前字母是: g
當(dāng)前字母是: o
當(dāng)前字母是: o
當(dāng)前字母是: d
當(dāng)前字母是: s
---------循環(huán)數(shù)字序列-------------
當(dāng)前數(shù)字是:1
當(dāng)前數(shù)字是:2
當(dāng)前數(shù)字是:3
當(dāng)前數(shù)字是:4
當(dāng)前數(shù)字是:5
---------循環(huán)字典-------------
當(dāng)前字典的值是:性別=男
當(dāng)前字典的值是:愛好=女
當(dāng)前字典的值是:age=23
當(dāng)前字典的值是:name=小明
---------循環(huán)字典,使用序列解包-------------
性別:男
age:23
name:小明
愛好:女

迭代工具

并行迭代

在Python中狱掂,內(nèi)建的zip函數(shù)用來進(jìn)行并行迭代演痒,可以把兩個(gè)序列合并在一起,返回一個(gè)元素的列表符欠。zip函數(shù)可以作用于任意數(shù)量的序列嫡霞,并且可以應(yīng)付不等長的序列,當(dāng)序列用完時(shí)就停止希柿,此時(shí)以段序列為準(zhǔn)诊沪,當(dāng)段序列執(zhí)行結(jié)束,for循環(huán)就遍歷結(jié)束曾撤。

for num1,num2 in zip(range(3),range(100)):
    print('number=',num1)

輸出

number= 0
number= 1
number= 2

反轉(zhuǎn)和排序迭代

sorted()函數(shù)返回排序后的序列端姚,reversed()函數(shù)返回反轉(zhuǎn)后的序列

print(sorted([5,3,7,1]))
print(sorted('hello world!'))
print(list(reversed('hello world')))
print(''.join(reversed('hello world')))

輸出:

[1, 3, 5, 7]
[' ', '!', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
['d', 'l', 'r', 'o', 'w', ' ', 'o', 'l', 'l', 'e', 'h']
dlrow olleh

break和continue

break和continue同java,break用于跳出循環(huán)挤悉,執(zhí)行循環(huán)體外的語句渐裸,continue用于跳出當(dāng)前循環(huán),繼續(xù)執(zhí)行剩余的循環(huán)體装悲。

循環(huán)中的else語句

在while條件語句為false時(shí)昏鹃,執(zhí)行else語句

在for條件語句為false時(shí)或結(jié)束后沒有被break中段時(shí),執(zhí)行else語句诀诊。

pass語句

pass不做任何事情洞渤,只是占位語句。

習(xí)題

1 猜數(shù)字

#猜數(shù)字的游戲属瓣,猜大了提示大了载迄,猜小了提示小了,猜對了提示對了抡蛙,并告知猜了幾次
import random
random_num = random.randint(1,10)
input_num = input('你猜我手里的1-10的數(shù)字是多少护昧?')
i=0
while True:
    if not input_num.isdigit():
        print('輸入的不是數(shù)字')
        break
    input_num_int = int(input_num)
    i+=1
    if input_num_int > random_num:
        input_num = input('你猜大了,再給你一次機(jī)會(huì)')
    elif input_num_int < random_num:
        input_num = input('你猜小了粗截,再給你一次機(jī)會(huì)')
    else:
        print('恭喜你惋耙,猜對了!你一共猜了%d次'%i)
        break

2是不是阿姆斯特朗數(shù)

#如果一個(gè)n位正整數(shù)等于各位數(shù)字n次方的和熊昌,就稱該數(shù)為阿姆斯特朗數(shù)怠晴。例如:1^3+5^3+3^3=153
#1000以內(nèi)的阿姆斯特朗數(shù)還有:1、2浴捆、3、4稿械、5选泻、6、7、8页眯、9梯捕、153、370窝撵、371傀顾、407
#寫一個(gè)程序,判斷輸入的數(shù)字是否是阿姆斯特朗數(shù)
input_num = input('請輸入一個(gè)阿姆斯特朗數(shù)')
comput_result = 0
length = len(input_num)
if input_num.isdigit():
    for letter in input_num:
        comput_result += int(letter)**length
    if comput_result == int(input_num):
        print('你輸入的數(shù)字',input_num,'各位相加的結(jié)果是',comput_result,'碌奉,是阿姆斯特朗數(shù)')
    else:
        print('你輸入的數(shù)字',input_num,'各位相加的結(jié)果是',comput_result,'短曾,不是阿姆斯特朗數(shù)')
else:
    print('輸入的不是數(shù)字!')
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赐劣,一起剝皮案震驚了整個(gè)濱河市嫉拐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌魁兼,老刑警劉巖婉徘,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異咐汞,居然都是意外死亡盖呼,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門化撕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來几晤,“玉大人,你說我怎么就攤上這事侯谁⌒拷觯” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵墙贱,是天一觀的道長热芹。 經(jīng)常有香客問我,道長惨撇,這世上最難降的妖魔是什么伊脓? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮魁衙,結(jié)果婚禮上报腔,老公的妹妹穿的比我還像新娘。我一直安慰自己剖淀,他們只是感情好纯蛾,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著纵隔,像睡著了一般翻诉。 火紅的嫁衣襯著肌膚如雪炮姨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天碰煌,我揣著相機(jī)與錄音舒岸,去河邊找鬼。 笑死芦圾,一個(gè)胖子當(dāng)著我的面吹牛蛾派,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播个少,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼洪乍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了稍算?” 一聲冷哼從身側(cè)響起典尾,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎糊探,沒想到半個(gè)月后钾埂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡科平,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年褥紫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞪慧。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡髓考,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出弃酌,到底是詐尸還是另有隱情氨菇,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布妓湘,位于F島的核電站查蓉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏榜贴。R本人自食惡果不足惜豌研,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望唬党。 院中可真熱鬧鹃共,春花似錦、人聲如沸驶拱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蓝纲。三九已至坷随,卻和暖如春房铭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背温眉。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翁狐,地道東北人类溢。 一個(gè)月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像露懒,于是被迫代替她去往敵國和親闯冷。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容