#m為行,n為列的情況
創(chuàng)新互聯(lián)是一家從事企業(yè)網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、行業(yè)門戶網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)制作的專業(yè)網(wǎng)站制作公司,擁有經(jīng)驗(yàn)豐富的網(wǎng)站建設(shè)工程師和網(wǎng)頁設(shè)計(jì)人員,具備各種規(guī)模與類型網(wǎng)站建設(shè)的實(shí)力,在網(wǎng)站建設(shè)領(lǐng)域樹立了自己獨(dú)特的設(shè)計(jì)風(fēng)格。自公司成立以來曾獨(dú)立設(shè)計(jì)制作的站點(diǎn)成百上千家。
while?1:
try:
m?=?int(raw_input('input?number?m:'))
try?:
n?=?int(raw_input('input?number?n:'))????????????
except?:
print?'n?must?be?a?number!'
else:
if?m??0?or?m??9:
print?'m?must?between?0?and?9.'
elif?n??0?or?n??9:
print?'n?must?between?0?and?9.'
else:
break
except?:
print?'m?must?be?a?number!'
for?x?in?xrange(1,m+1):?
for?y?in?xrange(1,n+1):
print?'%s*%s=%s?'?%?(x,y,x*y),
print?'\n',
采用matplotlib作圖時(shí)默認(rèn)設(shè)置下是無法顯示中文的,例如編寫如下python腳本,
#-*- coding: utf-8 -*-
from pylab import *
t = arange(-4*pi, 4*pi, 0.01)
y = sin(t)/t
plt.plot(t, y)
plt.title(u'鐘形函數(shù)')
plt.xlabel(u'時(shí)間')
plt.ylabel(u'幅度')
plt.show()
顯示出來的結(jié)果如圖1所示,可見標(biāo)題、標(biāo)簽都無法正常顯示中文:
圖1
實(shí)際上,matplotlib是支持unicode編碼的,出現(xiàn)圖1的問題主要是沒有找到合適的中文字體,在matplotlib的配置文件中,可以看到字體的默認(rèn)設(shè)置如下:
#font.family : sans-serif
#font.sans-serif : Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
并沒有中文字體,所以我們只要手動(dòng)添加中文字體的名稱就可以了,不過并不是添加我們熟悉的“宋體”或“黑體”這類的名稱,而是要添加字體管理器識(shí)別出的字體名稱,matplotlib自身實(shí)現(xiàn)的字體管理器在文件font_manager.py中,自動(dòng)生成的可用字體信息在保存在文件fontList.cache里,可以搜索這個(gè)文件查看對(duì)應(yīng)字體的名稱,例如simhei.ttf對(duì)應(yīng)的名稱為’SimHei’,simkai.ttf對(duì)應(yīng)的名稱為’KaiTi_GB2312’等。因此我們只要把這些名稱添加到配置文件中去就可以讓matplotlib顯示中文,修改的方法有兩種:
1. 直接修改配置文件matplotlibrc
在配置文件中找到font.sans-serif的設(shè)置,然后添加需要的中文字體名稱,例如:
font.sans-serif : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
2. 動(dòng)態(tài)設(shè)置(推薦方式)
在python腳本中動(dòng)態(tài)設(shè)置matplotlibrc,這樣不需要更改配置文件,方便靈活,例如:
mpl.rcParams['font.sans-serif'] = ['SimHei']
修改后的代碼如下:
#-*- coding: utf-8 -*-
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
t = arange(-4*pi, 4*pi, 0.01)
y = sin(t)/t
plt.plot(t, y)
plt.title(u'鐘形函數(shù)')
plt.xlabel(u'時(shí)間')
plt.ylabel(u'幅度')
plt.show()
顯示出來的結(jié)果如圖2所示,可見標(biāo)題、標(biāo)簽都能正常顯示中文:
圖2
但是細(xì)心些可以看出圖2顯示的結(jié)果并不正確,注意對(duì)比圖1和圖2的橫坐標(biāo)的坐標(biāo)值,會(huì)發(fā)現(xiàn)圖2中負(fù)軸的橫坐標(biāo)值不對(duì),負(fù)號(hào)不見了!很明顯,這不是程序的錯(cuò)誤,而是由于更改了字體導(dǎo)致顯示不出負(fù)號(hào),在配置文件中我們可以在axes相關(guān)設(shè)置里找到如下設(shè)置:
#axes.unicode_minus : True
可見默認(rèn)情況下采用的是unicode的minus,看來我們選擇的字體對(duì)這點(diǎn)支持不夠,所以只要把它設(shè)置為False就可以了,最終的代碼如下:
#-*- coding: utf-8 -*-
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
t = arange(-4*pi, 4*pi, 0.01)
y = sin(t)/t
plt.plot(t, y)
plt.title(u'鐘形函數(shù)')
plt.xlabel(u'時(shí)間')
plt.ylabel(u'幅度')
plt.show()
最終顯示的結(jié)果如圖3所示,一切都正常了。
【常見的內(nèi)置函數(shù)】
1、enumerate(iterable,start=0)
是python的內(nèi)置函數(shù),是枚舉、列舉的意思,對(duì)于一個(gè)可迭代的(iterable)/可遍歷的對(duì)象(如列表、字符串),enumerate將其組成一個(gè)索引序列,利用它可以同時(shí)獲得索引和值。
2、zip(*iterables,strict=False)
用于將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的列表。如果各個(gè)迭代器的元素個(gè)數(shù)不一致,則返回列表長度與最短的對(duì)象相同,利用*號(hào)操作符,可以將元組解壓為列表。
3、filter(function,iterable)
filter是將一個(gè)序列進(jìn)行過濾,返回迭代器的對(duì)象,去除不滿足條件的序列。
4、isinstance(object,classinfo)
是用來判斷某一個(gè)變量或者是對(duì)象是不是屬于某種類型的一個(gè)函數(shù),如果參數(shù)object是classinfo的實(shí)例,或者object是classinfo類的子類的一個(gè)實(shí)例,
返回True。如果object不是一個(gè)給定類型的的對(duì)象, 則返回結(jié)果總是False
5、eval(expression[,globals[,locals]])
用來將字符串str當(dāng)成有效的表達(dá)式來求值并返回計(jì)算結(jié)果,表達(dá)式解析參數(shù)expression并作為Python表達(dá)式進(jìn)行求值(從技術(shù)上說是一個(gè)條件列表),采用globals和locals字典作為全局和局部命名空間。
【常用的句式】
1、format字符串格式化
format把字符串當(dāng)成一個(gè)模板,通過傳入的參數(shù)進(jìn)行格式化,非常實(shí)用且強(qiáng)大。
2、連接字符串
常使用+連接兩個(gè)字符串。
3、if...else條件語句
Python條件語句是通過一條或多條語句的執(zhí)行結(jié)果(True或者False)來決定執(zhí)行的代碼塊。其中if...else語句用來執(zhí)行需要判斷的情形。
4、for...in、while循環(huán)語句
循環(huán)語句就是遍歷一個(gè)序列,循環(huán)去執(zhí)行某個(gè)操作,Python中的循環(huán)語句有for和while。
5、import導(dǎo)入其他腳本的功能
有時(shí)需要使用另一個(gè)python文件中的腳本,這其實(shí)很簡單,就像使用import關(guān)鍵字導(dǎo)入任何模塊一樣。
Turtle庫是Python語言中一個(gè)很流行的繪制圖像的函數(shù)庫,想象一個(gè)小烏龜,在一個(gè)橫軸為x、縱軸為y的坐標(biāo)系原點(diǎn),(0,0)位置開始,它根據(jù)一組函數(shù)指令的控制,在這個(gè)平面坐標(biāo)系中移動(dòng),從而在它爬行的路徑上繪制了圖形。
畫布就是turtle為我們展開用于繪圖區(qū)域,我們可以設(shè)置它的大小和初始位置。
設(shè)置畫布大小
turtle.screensize(canvwidth=None, canvheight=None, bg=None),參數(shù)分別為畫布的寬(單位像素), 高, 背景顏色。
如:turtle.screensize(800,600, "green")
turtle.screensize() #返回默認(rèn)大小(400, 300)
turtle.setup(width=0.5, height=0.75, startx=None, starty=None),參數(shù):width, height: 輸入寬和高為整數(shù)時(shí), 表示像素; 為小數(shù)時(shí), 表示占據(jù)電腦屏幕的比例,(startx, starty): 這一坐標(biāo)表示矩形窗口左上角頂點(diǎn)的位置, 如果為空,則窗口位于屏幕中心。
如:turtle.setup(width=0.6,height=0.6)
turtle.setup(width=800,height=800, startx=100, starty=100)
2.1 畫筆的狀態(tài)
在畫布上,默認(rèn)有一個(gè)坐標(biāo)原點(diǎn)為畫布中心的坐標(biāo)軸,坐標(biāo)原點(diǎn)上有一只面朝x軸正方向小烏龜。這里我們描述小烏龜時(shí)使用了兩個(gè)詞語:坐標(biāo)原點(diǎn)(位置),面朝x軸正方向(方向), turtle繪圖中,就是使用位置方向描述小烏龜(畫筆)的狀態(tài)。
2.2 畫筆的屬性
畫筆(畫筆的屬性,顏色、畫線的寬度等)
1) turtle.pensize():設(shè)置畫筆的寬度;
2) turtle.pencolor():沒有參數(shù)傳入,返回當(dāng)前畫筆顏色,傳入?yún)?shù)設(shè)置畫筆顏色,可以是字符串如"green", "red",也可以是RGB 3元組。
3) turtle.speed(speed):設(shè)置畫筆移動(dòng)速度,畫筆繪制的速度范圍[0,10]整數(shù),數(shù)字越大越快。
2.3 繪圖命令
操縱海龜繪圖有著許多的命令,這些命令可以劃分為3種:一種為運(yùn)動(dòng)命令,一種為畫筆控制命令,還有一種是全局控制命令。
(1) 畫筆運(yùn)動(dòng)命令
(2) 畫筆控制命令
(3) 全局控制命令
(4) 其他命令
3. 命令詳解
3.1 turtle.circle(radius, extent=None, steps=None)
描述:以給定半徑畫圓
參數(shù):
radius(半徑):半徑為正(負(fù)),表示圓心在畫筆的左邊(右邊)畫圓;
extent(弧度) (optional);
steps (optional) (做半徑為radius的圓的內(nèi)切正多邊形,多邊形邊數(shù)為steps)。
舉例:
circle(50) # 整圓;
circle(50,steps=3) # 三角形;
circle(120, 180) # 半圓
實(shí)例:
1、太陽花
2、五角星
3、時(shí)鐘程序
第一步,打開python語言命令窗口,聲明一個(gè)函數(shù)print_color,調(diào)用range遍歷,打印星號(hào),如下圖所示:
第二步,接著調(diào)用第一步中的函數(shù),然后查看打印結(jié)果,可以發(fā)現(xiàn)生成一個(gè)三角形,如下圖所示:
第三步,再次定義一個(gè)函數(shù)four_tu,利用循環(huán)生成星號(hào),注意查看函數(shù)生成的圖形。
第四步,調(diào)用上述步驟中定義的函數(shù),然后查看打印圖形組合的形狀。
第五步,如果在定義的函數(shù)內(nèi),多次調(diào)用print()方法打印星號(hào),會(huì)是什么樣的結(jié)果呢。
第六步,在后續(xù)步驟中,調(diào)用函數(shù)打印結(jié)果,可以發(fā)現(xiàn)生成一個(gè)不規(guī)則的圖形。
python沒有提供求平均數(shù)的函數(shù),建議先求和然后除以個(gè)數(shù)求得,內(nèi)容如下:
#!/usr/bin/env pythonimport timeimport numpy as np,dd = np.random.randint(0, 20, size=(2*1000*1000))t_start = time.clock()avg_sum1 =0.0BlockOffset = 0 ? ? while BlockOffset len(dd):if dd[BlockOffset + 1] = 10。
解釋性:
一個(gè)用編譯性語言比如C或C++寫的程序可以從源文件(即C或C++語言)轉(zhuǎn)換到一個(gè)你的計(jì)算機(jī)使用的語言(二進(jìn)制代碼,即0和1)。這個(gè)過程通過編譯器和不同的標(biāo)記、選項(xiàng)完成。
運(yùn)行程序的時(shí)候,連接/轉(zhuǎn)載器軟件把你的程序從硬盤復(fù)制到內(nèi)存中并且運(yùn)行。而Python語言寫的程序不需要編譯成二進(jìn)制代碼。你可以直接從源代碼運(yùn)行 程序。
在計(jì)算機(jī)內(nèi)部,Python解釋器把源代碼轉(zhuǎn)換成稱為字節(jié)碼的中間形式,然后再把它翻譯成計(jì)算機(jī)使用的機(jī)器語言并運(yùn)行。這使得使用Python更加簡單。也使得Python程序更加易于移植。