Python入門筆記

?

Python變量和數據類型

數據類型

print語句

注釋

Python的注釋以 # 開頭,后面的文字直到行尾都算注釋

# 這一行全部都是注釋...
print 'hello' # 這也是注釋

什么是變量

定義字符串

字符串可以用''或者""括起來表示。

如果字符串本身包含'怎么辦?比如我們要表示字符串 I'm OK ,這時,可以用" "括起來表示:

"I'm OK"
類似的,如果字符串包含",我們就可以用' '括起來表示:

'Learn "Python" in imooc'
如果字符串既包含'又包含"怎么辦?

這個時候,就需要對字符串的某些特殊字符進行“轉義”,Python字符串用\進行轉義。

要表示字符串 Bob said "I'm OK".
由于 ' 和 " 會引起歧義,因此,我們在它前面插入一個\表示這是一個普通字符,不代表字符串的起始,因此,這個字符串又可以表示為

'Bob said \"I\'m OK\".'
注意:轉義字符 \ 不計入字符串的內容中。

常用的轉義字符還有:

\n 表示換行
\t 表示一個制表符
\ 表示 \ 字符本身

raw字符串與多行字符串

我們可以在字符串前面加個前綴 r ,表示這是一個 raw 字符串,里面的字符就不需要轉義了。例如:

r'\(~_~)/ \(~_~)/'

但是r'...'表示法不能表示多行字符串,也不能表示包含'和 "的字符串(為什么?)

如果要表示多行字符串,可以用'''...'''表示:

'''Line 1
Line 2
Line 3'''

上面這個字符串的表示方法和下面的是完全一樣的:

'Line 1\nLine 2\nLine 3'

還可以在多行字符串前面添加 r ,把這個多行字符串也變成一個raw字符串:

r'''Python is created by "Guido".
It is free and easy to learn.
Let's start learn Python in imooc!'''

Unicode字符串

轉義:

u'中文\n日文\n韓文'
多行:

u'''第一行
第二行'''

raw+多行:

ur'''Python的Unicode字符串支持"中文",
"日文",
"韓文"等多種語言'''

整數和浮點數

布爾類型

List和Tuple類型

list

按照索引訪問list

倒序訪問list

添加新元素

第一個辦法是用 list 的 append() 方法,把新同學追加到 list 的末尾:

>>> L = ['Adam', 'Lisa', 'Bart'] >>> L.append('Paul') >>> print L ['Adam', 'Lisa', 'Bart', 'Paul'] append()總是把新的元素添加到 list 的尾部。

方法二是用list的 insert()方法,它接受兩個參數,第一個參數是索引號,第二個參數是待添加的新元素:

>>> L = ['Adam', 'Lisa', 'Bart'] >>> L.insert(0, 'Paul') >>> print L ['Paul', 'Adam', 'Lisa', 'Bart']

從list刪除元素

  • 最后一個元素,我們可以用list的pop()方法刪除:
       >>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] >>> L.pop() 'Paul' >>> print L ['Adam', 'Lisa', 'Bart']
    pop()方法總是刪掉list的最后一個元素,并且它還返回這個元素,所以我們執行 L.pop() 后,會打印出 'Paul'

如果Paul同學不是排在最后一個怎么辦?比如Paul同學排在第三:

>>> L = ['Adam', 'Lisa', 'Paul', 'Bart']
要把Paul踢出list,我們就必須先定位Paul的位置。由于Paul的索引是2,因此,用 pop(2)把Paul刪掉:

替換元素

替換時直接賦值

tuple

tuple是另一種有序的列表,中文翻譯為“ 元組 ”。tuple 和 list 非常類似,但是,tuple一旦創建完畢,就不能修改了。

創建tuple和創建list唯一不同之處是用( )替代了[ ]。

tuple沒有 append()方法,也沒有insert()和pop()方法。

創建單元素tuple

包含 0 個元素的 tuple,也就是空tuple,直接用 ()表示:

>>> t = ()
>>> print t
()

創建包含1個元素的 tuple 呢?來試試:

>>> t = (1)
>>> print t
1 好像哪里不對!t 不是 tuple ,而是整數1。為什么呢?

因為()既可以表示tuple,又可以作為括號表示運算時的優先級,結果 (1) 被Python解釋器計算出結果 1,導致我們得到的不是tuple,而是整數 1。

正是因為用()定義單元素的tuple有歧義,所以 Python 規定,單元素 tuple 要多加一個逗號“,”,這樣就避免了歧義:

>>> t = (1,)
>>> print t
(1,) Python在打印單元素tuple時,也自動添加了一個“,”,為了更明確地告訴你這是一個tuple。

“可變的tuple”

前面我們看到了tuple一旦創建就不能修改。現在,我們來看一個“可變”的tuple:

>>> t = ('a', 'b', ['A', 'B'])

注意到 t 有 3 個元素:'a','b'和一個list:['A', 'B']。list作為一個整體是tuple的第3個元素。list對象可以通過 t[2] 拿到:

>>> L = t[2]
然后,我們把list的兩個元素改一改:

>>> L[0] = 'X'
>>> L[1] = 'Y'

再看看tuple的內容:

>>> print t
('a', 'b', ['X', 'Y'])

條件判斷和循環

if語句

for循環

L = ['Adam', 'Lisa', 'Bart']
for name in L: print name ### while循環

while x < N:
print x
x = x + 1

break與continue

在循環過程中,可以用break退出當前循環,還可以用continue跳過后續循環代碼,繼續下一次循環。

多重循環

Dict和Set類型

什么是dict

用 dict 表示“名字”-“成績”的查找表如下:

d = {'Adam': 95,'Lisa': 85,'Bart': 59
}

我們把名字稱為key,對應的成績稱為value,dict就是通過 key 來查找 value。

花括號 {} 表示這是一個dict,然后按照 key: value, 寫出來即可。最后一個 key: value 的逗號可以省略。

訪問dict

d[key] 的形式來查找對應的 value,這和 list 很像,不同之處是,list 必須使用索引返回對應的元素,而dict使用key:

注意: 通過 key 訪問 dict 的value,只要 key 存在,dict就返回對應的value。如果key不存在,會直接報錯:KeyError。

要避免 KeyError 發生,有兩個辦法:

  • 一是先判斷一下 key 是否存在,用 in 操作符:

    if 'Paul' in d:print d['Paul']

    如果 'Paul' 不存在,if語句判斷為False,自然不會執行 print d['Paul'] ,從而避免了錯誤。

  • 二是使用dict本身提供的一個 get 方法,在Key不存在的時候,返回None:

    >>> print d.get('Bart')
    59 >>> print d.get('Paul') None

dict的特點

  • 查找速度快,無論dict有10個元素還是10萬個元素,查找速度都一樣。而list的查找速度隨著元素增加而逐漸下降。

不過dict的查找速度快不是沒有代價的,**dict的缺點是占用內存大,還會浪費很多內容,list正好相反,占用內存小,但是查找速度慢。

  • 由于dict是按 key 查找,所以,在一個dict中,key不能重復。

  • 存儲的key-value序對是沒有順序的!這和list不一樣:

    d = {'Adam': 95,'Lisa': 85,'Bart': 59
    }

    當我們試圖打印這個dict時:

    >>> print d
    {'Lisa': 85, 'Adam': 95, 'Bart': 59} 打印的順序不一定是我們創建時的順序,而且,不同的機器打印的順序都可能不同,這說明dict內部是無序的,不能用dict存儲有序的集合。
  • **是作為 key 的元素必須不可變,Python的基本類型如字符串、整數、浮點數都是不可變的,都可以作為 key。但是list是可變的,就不能作為 key。

可以試試用list作為key時會報什么樣的錯誤。

不可變這個限制僅作用于key,value是否可變無所謂:

{
'123': [1, 2, 3], # key 是 str,value是list
123: '123', # key 是 int,value 是 str
('a', 'b'): True # key 是 tuple,并且tuple的每個元素都是不可變對象,value是 boolean
}
最常用的key還是字符串,因為用起來最方便。

更新dict

要把新同學'Paul'的成績 72 加進去,用賦值語句:

>>> d['Paul'] = 72

遍歷dict

直接使用for循環可以遍歷 dict 的 key:

>>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } >>> for key in d: ... print key ... Lisa Adam Bart

什么是set

dict的作用是建立一組 key 和一組 value 的映射關系,dict的key是不能重復的。

有的時候,我們只想要 dict 的 key,不關心 key 對應的 value,目的就是保證這個集合的元素不會重復,這時,set就派上用場了。

set 持有一系列元素,這一點和 list 很像,但是set的元素沒有重復,而且是無序的,這點和 dict 的 key很像。

所以set可以作為dict的key

訪問set

訪問 set中的某個元素實際上就是判斷一個元素是否在set中。

例如,存儲了班里同學名字的set:

`>>> s = set(['Adam', 'Lisa', 'Bart', 'Paul'])
我們可以用?in?操作符判斷:

Bart是該班的同學嗎?

>>> 'Bart' in s
True

set的特點

  • set的內部結構和dict很像,唯一區別是不存儲value,因此,判斷一個元素是否在set中速度很快。

  • set存儲的元素和dict的key類似,必須是不變對象,因此,任何可變對象是不能放入set中的。

  • set存儲的元素也是沒有順序的。

遍歷set

由于 set 也是一個集合,所以,遍歷 set 和遍歷 list 類似,都可以通過 for 循環實現。

直接使用 for 循環可以遍歷 set 的元素:

>>> s = set(['Adam', 'Lisa', 'Bart']) >>> for name in s: ... print name ... Lisa Adam Bart

更新set

添加元素時,用set的add()方法:

>>> s = set([1, 2, 3])
>>> s.add(4)
>>> print s
set([1, 2, 3, 4])

如果添加的元素已經存在于set中,add()不會報錯,但是不會加進去了:

>>> s = set([1, 2, 3])
>>> s.add(3)
>>> print s
set([1, 2, 3])

刪除set中的元素時,用set的remove()方法:

>>> s = set([1, 2, 3, 4])
>>> s.remove(4) >>> print s set([1, 2, 3])

如果刪除的元素不存在set中,remove()會報錯:

>>> s = set([1, 2, 3]) >>> s.remove(4) Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 4

所以用add()可以直接添加,而remove()前需要判斷。

函數

什么是函數

調用函數

編寫函數

返回多值

>>> r = move(100, 100, 60, math.pi / 6)
>>> print r
(151.96152422706632, 70.0)

Python的函數返回多值其實就是返回一個tuple,但寫起來更方便。

遞歸函數

漢諾塔

定義默認參數

定義可變參數

如果想讓一個函數能接受任意個參數,我們就可以定義一個可變參數:

def fn(*args): print args

可變參數也不是很神秘,Python解釋器會把傳入的一組參數組裝成一個tuple傳遞給可變參數,因此,在函數內部,直接把變量 args 看成一個 tuple 就好了。

切片

對list進行切片

取前N個元素,也就是索引為0-(N-1)的元素,可以用循環:

>>> r = []
>>> n = 3
>>> for i in range(n): ... r.append(L[i]) ... >>> r ['Adam', 'Lisa', 'Bart']

對這種經常取指定索引范圍的操作,用循環十分繁瑣,因此,Python提供了切片(Slice)操作符,能大大簡化這種操作。

對應上面的問題,取前3個元素,用一行代碼就可以完成切片:

>>> L[0:3]
['Adam', 'Lisa', 'Bart'] L[0:3]表示,從索引0開始取,直到索引3為止,但不包括索引3。即索引0,1,2,正好是3個元素

只用一個 : ,表示從頭到尾:

>>> L[:]
['Adam', 'Lisa', 'Bart', 'Paul'] 因此,L[:]實際上復制出了一個新list。

切片操作還可以指定第三個參數:

>>> L[::2]
['Adam', 'Bart']
第三個參數表示每N個取一個,上面的 L[::2] 會每兩個元素取出一個來,也就是隔一個取一個。

把list換成tuple,切片操作完全相同,只是切片的結果也變成了tuple。

倒序切片

對字符串切片

字符串 'xxx'和 Unicode字符串 u'xxx'也可以看成是一種list,每個元素就是一個字符。因此,字符串也可以用切片操作,只是操作結果仍是字符串

迭代

什么是迭代

在Python中,如果給定一個list或tuple,我們可以通過for循環來遍歷這個list或tuple,這種遍歷我們成為迭代(Iteration)。

在Python中,迭代是通過 for ... in 來完成的

因為 Python 的 for循環不僅可以用在list或tuple上,還可以作用在其他任何可迭代對象上。

因此,迭代操作就是對于一個集合,無論該集合是有序還是無序,我們用 for 循環總是可以依次取出集合的每一個元素。

注意: 集合是指包含一組元素的數據結構,我們已經介紹的包括:

  1. 有序集合:list,tuple,str和unicode;
  2. 無序集合:set
  3. 無序集合并且具有 key-value 對:dict
    而迭代是一個動詞,它指的是一種操作,在Python中,就是 for 循環。

索引迭代

**Python中,迭代永遠是取出元素本身,而非元素的索引。

對于有序集合,元素確實是有索引的。有的時候,我們確實想在 for 循環中拿到索引,怎么辦?

方法是使用 enumerate() 函數:

>>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] >>> for index, name in enumerate(L): ... print index, '-', name ... 0 - Adam 1 - Lisa 2 - Bart 3 - Paul

迭代dict的value

dict 對象有一個 values() 方法,這個方法把dict轉換成一個包含所有value的list,這樣,我們迭代的就是 dict的每一個 value:

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } print d.values() # [85, 95, 59] for v in d.values(): print v # 85 # 95 # 59

如果仔細閱讀Python的文檔,還可以發現,dict除了values()方法外,還有一個 itervalues() 方法,用?itervalues() 方法替代 values() 方法,迭代效果完全一樣:

*那這兩個方法有何不同之處呢?

  1. values() 方法實際上把一個 dict 轉換成了包含 value 的list。

  2. 但是 itervalues() 方法不會轉換,它會在迭代過程中依次從 dict 中取出 value,所以 itervalues() 方法比 values() 方法節省了生成 list 所需的內存。

  3. 打印 itervalues() 發現它返回一個 <dictionary-valueiterator> 對象,這說明在Python中,for 循環可作用的迭代對象遠不止 list,tuple,str,unicode,dict等,任何可迭代對象都可以作用于for循環,而內部如何迭代我們通常并不用關心。

迭代dict的key和value

items() 方法把dict對象轉換成了包含tuple的list,我們對這個list進行迭代,可以同時獲得key和value:

>>> for key, value in d.items():
... print key, ':', value ... Lisa : 85 Adam : 95 Bart : 59

和 values() 有一個 itervalues() 類似, items() 也有一個對應的?iteritems(),iteritems()?不把dict轉換成list,而是在迭代過程中不斷給出 tuple,所以, iteritems() 不占用額外的內存。

列表生成式

生成列表

要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我們可以用range(1, 11):

>>> range(1, 11)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是循環:

>>> L = []
>>> for x in range(1, 11): ... L.append(x * x) ... >>> L [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

但是循環太繁瑣,而列表生成式則可以用一行語句代替循環生成上面的list:

>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

這種寫法就是Python特有的列表生成式。利用列表生成式,可以以非常簡潔的代碼生成 list。

復雜表達式

假設有如下的dict:

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }

完全可以通過一個復雜的列表生成式把它變成一個 HTML 表格:

tds = ['<tr><td>%s</td><td>%s</td></tr>' % (name, score) for name, score in d.iteritems()] print '<table>' print '<tr><th>Name</th><th>Score</th><tr>' print '\n'.join(tds) print '</table>'

字符串的join()方法可以把一個 list 拼接成一個字符串

條件過濾

列表生成式的 for 循環后面還可以加上 if 判斷。例如:

>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]

有了 if 條件,只有 if 判斷為 True 的時候,才把循環的當前元素添加到列表中。

多層表達式

for循環可以嵌套,因此,在列表生成式中,也可以用多層 for 循環來生成列表。

對于字符串 'ABC' 和 '123',可以使用兩層循環,生成全排列:

>>> [m + n for m in 'ABC' for n in '123'] ['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

翻譯成循環代碼就像下面這樣:

L = []
for m in 'ABC':for n in '123': L.append(m + n)

轉載于:https://www.cnblogs.com/liulie/p/6903484.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370555.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370555.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370555.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

1058. 選擇題(20)

原題: https://www.patest.cn/contests/pat-b-practise/1058 思路: 本題主要就是怎么讀取數據的問題, 一定要注意scanf函數匹配到 空格或者回車會結束當前變量的賦值, 并且會丟棄這個空格或回車. 關于如何判斷一項答題是否正確, 可以采用循環一個一個判斷, 也可拼成 字符串用st…

使用Spring和Hibernate進行集成測試有多酷

我有罪&#xff0c;直到現在才寫集成測試&#xff08;至少針對數據庫相關事務&#xff09;。 因此&#xff0c;為了消除內感&#xff0c;我閱讀了如何在周末以最少的努力實現這一目標。 提供了一個小示例&#xff0c;描述了如何使用Spring和Hibernate輕松實現這一目標。 通過集…

假設mysql數據表t1有字段_使用ROMA Connect集成數據

概述ROMA Connect支持接入多種類型的數據源&#xff0c;并通過數據集成任務實現源端到目標端的數據集成轉換。ROMA Connect支持相同結構數據之間進行集成轉換&#xff0c;也支持異構數據之間進行集成轉換。本章節通過完成一個SQL Server到MySQL的數據集成配置樣例&#xff0c;幫…

vue-wechat-title

html中的title安裝&#xff1a;npm install vue-wechat-title --save1.在mian.js中//網頁titleimport VueTitle from vue-wechat-title Vue.use(VueTitle);2. 路由中加下 title { path: /, component: Index, meta: { title: 首頁 } }3. 在app.vue 中修改 router-view &a…

如何保證input的輸入值不會隨著提交 而變空_如何對web界面的應用進行測試?

一、輸入框&#xff1a;1、字符型輸入框&#xff1a;&#xff08;1&#xff09;字符型輸入框&#xff1a;英文全角、英文半角、數字、空或者空格、特殊字符“~&#xff01;#&#xffe5;%……&*&#xff1f;[]{}”特別要注意單引號和&符號。禁止直接輸入特殊字符時&…

CentOS6.x下,tomcat - web項目部署

1. 安裝tomcat tomcat安裝方法&#xff1a;http://www.cnblogs.com/vurtne-lu/p/6478440.html 2. 配置tomcat 修改server.xml文件 <!-- 使用 80 端口 (也可以使用其它端口)--> <Connector port"80" protocol"HTTP/1.1"connectionTimeout"200…

dedecms列表頁面隨機縮略圖調用

如果要利用dedecms制作扁平化主題&#xff0c;大概也能夠遇到相似的問題&#xff0c;那就是dedecms的縮略圖機制&#xff0c;在沒有縮略圖的情況下顯示單一的默認圖片&#xff0c;如果是wordpress可以很方便的定義函數調用隨機的縮略圖&#xff0c;即便是在沒有設置縮略圖并且文…

使用地圖觸發功能處理相干事件

本文介紹如何通過使用映射觸發器來處理一致性事件。 基本上&#xff0c;建議使用Oracle Coherence中的分布式數據管理來研究Oracle Coherence API的基本配置和實現。 映射觸發器是Oracle Coherence提供最高度定制的緩存管理系統的最重要功能之一。 MapTrigger代表一個功能代理…

阿里云服務器mysql莫名丟失_mysql數據庫丟失

mysql數據庫丟失云服務器(Elastic Compute Service&#xff0c;簡稱ECS)是阿里云提供的性能卓越、穩定可靠、彈性擴展的IaaS(Infrastructure as a Service)級別云計算服務。云服務器ECS免去了您采購IT硬件的前期準備&#xff0c;讓您像使用水、電、天然氣等公共資源一樣便捷、高…

01-HTML深入

1.1 瀏覽器的工作原理 把一些標簽解析成用戶可視化的頁面 1.2 HTML中的標簽與元素 在HTML中以<xx>開始&#xff0c;以</xx>結束&#xff0c;比如<html></html>等。 標簽和其內容統稱為元素&#xff0c;比如&#xff1a;<xx>h5</xx> 元素…

gitlab使用_使用 Docker 部署 Gitlab

GitLab 是一個用于倉庫管理系統的開源項目&#xff0c;使用Git作為代碼管理工具&#xff0c;并在此基礎上搭建起來的web服務&#xff0c;具有wiki和issue跟蹤功能。GitLab是當前應用非常廣泛的源代碼管理系統。1. 安裝docker引擎并啟動2. 獲取gitlab鏡像包查看下載好的鏡像3. 在…

js--webSocket入門

Websocket 1.websocket是什么&#xff1f; WebSocket是為解決客戶端與服務端實時通信而產生的技術。其本質是先通過HTTP/HTTPS協議進行握手后創建一個用于交換數據的TCP連接&#xff0c; 此后服務端與客戶端通過此TCP連接進行實時通信。 2.websocket的優點 以前我們實現推送技術…

node.js繼承

person.js module.exports function(){   this.name "person";   this.sleep function(){     console.log("sleep in the night");   }   this.eat function(){     console.log(eat food);   }} student.js var util require(&qu…

研究死鎖–第5部分:使用顯式鎖定

在我的上一個博客中&#xff0c;我研究了使用Java的傳統synchronized關鍵字和鎖排序來修復破碎的&#xff0c;死鎖的余額轉移示例代碼。 但是&#xff0c;有一種替代方法稱為顯式鎖定。 這里&#xff0c;將鎖定機制稱為顯式而非隱式的想法是&#xff0c; 顯式表示它不是Java語…

mysql 經典入門教程_MySQL 經典入門教程

MySQL 經典入門教程1 定義數據庫中的表&#xff1a;一行叫一條記錄。每一列叫一個屬性&#xff0c;或一個字段。主鍵&#xff1a;表中的某個特殊字段&#xff0c;具有唯一的確定的值&#xff0c;可以根據該字段唯一的確定一條記錄外鍵&#xff1a;表中的某個字段的值為另一張表…

druid連接池初始化慢_7、SpringBoot -連接池(Durid)

一導入相關核心包<dependencies>二 在application.ymlspring三、配置Druid Datasource(可選)Configuration五、監控訪問 http://localhost:8080/druid&#xff0c; 使用上面配置的賬號密碼。四、自動配置原理源代碼Configuration說明DataSourceProperties 配置相關 首先找…

負載均衡與反向代理

如果用域名 映射多了Ip &#xff1b; 外網應該用來實現 GSLB 1 輪詢pstream nginxDemo { server 127.0.0.1:8081; server 127.0.0.1:8082; } 最少鏈接web請求會被轉發到連接數最少的服務器上。 upstream nginxDemo { least_conn; server 127.0.…

使用工廠方法模式設計最佳實踐

在前面的“設計模式”示例中&#xff0c;我們解釋了當今常用的“工廠”模式。 在本節中&#xff0c;我們將了解具有更多抽象的更高級的解決方案。 該模式稱為工廠方法設計模式。 定義&#xff1a; Factory方法模式提供了一種用于創建對象的方法&#xff0c;但是將對象創建委托…

偏導數

引入 一元函數導數&#xff1a; 在一元函數中&#xff0c;我們已經知道導數就是函數的變化率&#xff08;對于一個一元函數&#xff0c;x增大了多少&#xff0c;y增大了多少&#xff0c;這個就是變化率&#xff09;。對于二元函數我們同樣要研究它的“變化率”。在xOy平面內&am…

qt繪制一圈圓_Qt繪制圓

最近開始折騰Qt了&#xff0c;手頭上的一個項目需要用到Qt來繪制一些簡單圖像。記錄下Qt繪制圓的過程&#xff1a;對于以A為圓心&#xff0c;半徑為R的圓&#xff0c;外部有一個外切的正方形&#xff0c;正方形上有B點。如下圖所示&#xff1a;對于void QPainter::drawArc(int …