看板 Python 關於我們 聯絡資訊
前言(廢話): 各位安安, 小弟之前有接觸過一咪咪autohotkey,因為最近找到了coding的樂趣, 開始透過youtube學習python,大概學到了用class建立對象與方法, 但一些很簡單的內置函數也都是看到別人用,才會知道有這東西。 在學習的過程中,我知道了leetcode這玩意,並在解題思路的幫助下,解出了第一題。 但到了第二題才發現,leetcode的入場門票是需要會數據結構與演算法, 這是我發文的主要原因。 以下問題: 1.數據結構與演算法資源推薦(中文偏好) 目前自己找到的資源,要嘛跟講得天書一樣難, 要嘛聽懂的卻又沒有code給我看實際到底長怎樣,有點難過 2.加强基礎的練習資源推薦 幫助手冊能教我如何使用,但如何運用或許就要透過刷題來學習了, 我知道leetcode和zerojudege,前者還不是我目前能面對的, 後者我也正在刷,只是想知道除了這些還有沒有其他推薦。 不限於刷題資源,教學文章、影片也可以(我覺得可以挑戰一下英文) 3.如何避免迴圈内的迴圈(for中for的改寫) 有時候會在for循環中再加入for循環,如果是一個兩個看起來還好, 但如果多起來的話,感覺邏輯上就會變得難釐清。 如果以下面的code來説的話),要如何避開或改善這個問題。 4.其他改善(同樣的code) 這部分像是註解、變數命名等等,因為沒參與過別人的開源項目, 也不知道怎麼做才是對其他開發人員友善,但又想早點培養習慣, 想來想去好像獻醜是最直接有效的改善方法, 如果在能力範圍內做得不夠好的話,希望各位能夠提點一下。 問完了,謝謝各位 這部分是code: # 給定一個整數數組 nums 和一個整數目標值 target,請你在該數組中找出 和為目標 值 target 的那 兩個 整數,並返回它們的數組下標。 # 你可以假設每種輸入只會對應一個答案。但是,數組中同一個元素在答案裡不能重複出 現。 # 你可以按任意順序返回答案。 class Solution: def twoSum(self, nums: list[int], target: int) -> list[int]: """ 功能: 從列表中找尋二者之和與目標值相同的數,返回他們在列表中的位置 ------------ 參數: nums: 數字所在的列表 target: 目標值 ------------ 變數: numsLen: 列表nums的長度: len(nums) num1Locat: num1的位置: in range(numsLen) num1: 第一個找到的數: nums[num1Locat] num2Locat: num2的位置: in range(num1Locat + 1, numsLen) num2: 第二個找到的數: nums[num2Locat] ------------ 返回值: result: 結果: [num1Locat, num2Locat] """ numsLen = len(nums) for num1Locat in range(numsLen): num1 = nums[num1Locat] for num2Locat in range(num1Locat + 1, numsLen): num2 = nums[num2Locat] if num1 + num2 == target: result = [num1Locat, num2Locat] return result # testNums = [1, 3, 6, 7, 8, 11] # testTarget = 19 # test = Solution() # testResult = test.twoSum(testNums, testTarget) # print(testResult) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.246.44.39 (澳門) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1632659900.A.BCA.html
ddavid: 針對問題1跟2,特別是「聽懂的卻又沒有code給我看」這句,09/26 21:03
ddavid: 其實就是你根本的程式邏輯跟語言熟練度不夠的問題了。基本09/26 21:04
ddavid: 上應該要往「理解的概念就要能夠轉換為程式」前進09/26 21:05
ddavid: 就好像腦中的想法能轉換為英文講出口,才叫做會英文09/26 21:05
謝謝您的建議,給了我很大的啟發
pmove: 回第一個問題,我當時在學資料結構,書是使用C++當範例,其09/26 21:22
pmove: 實資料結構沒有一定要用哪種語言實作,所以沒有一定要用Pyt09/26 21:22
pmove: hon來實作,個人建議學C/C++的資料結構,Python可以自行領09/26 21:22
pmove: 悟09/26 21:22
的確,我只有在python範圍內找資源,聽您這樣說,我也打算試一試
pmove: 回第三個問題,iterative 本身跟 recursive 可以互換,但是09/26 21:27
pmove: 兩個for其實也還好09/26 21:27
謝謝關鍵字,原來手冊上有,但一直沒去學XD
pmove: 回第二題(抱歉跳著回答),若是為了以後薪水著想,英文能力09/26 21:42
pmove: > 專業(硬體)知識 > coding能力,基本上,如果您英文新09/26 21:42
pmove: 多益有900分以上,這輩子大概就不愁吃穿了。另外,程式語言09/26 21:42
pmove: 請不要執著於Python, 在台灣都還是跟硬體較相關,薪水較高09/26 21:42
pmove: 。09/26 21:42
很棒的建議,我確實對programer有點想法,也打算在python用得更熟練一點後,再往更底 層的語言學習,我會好好考慮的
pmove: 回第四題,一般來說公司會訂coding style, 例如tab 要用4個09/26 21:47
pmove: space來取代,名稱要用匈牙利命名法 還是要用 駱駝命名法…09/26 21:47
那看起來真的要實際參與專案再來研究了XD
Supershero: 有關第四點可以參考PEP809/26 22:35
謝謝,很棒的指南 ※ 編輯: souhang (60.246.44.39 澳門), 09/26/2021 22:37:06 ※ 編輯: souhang (60.246.44.39 澳門), 09/26/2021 22:40:30
ck574b027: leetcode有分難度吧,難的先跳過不用客氣 09/26 23:07
aalexx: 基本功練好、觀念正確比較重要。不要禁不起誘惑只刷題練面 09/27 01:48
aalexx: 試,不然大學資工系沒有存在的道理。 09/27 01:48
aalexx: python普遍上應該是snake命名+4空格,但還是看專案或公司 09/27 01:49
aalexx: ,沒有硬性規定。風格上可以看pep8 09/27 01:49
aalexx: 程式語言不是問題,選個舒服的入門就好。姿態正確了學新語 09/27 01:51
aalexx: 言也是幾周的事(撇開fp)。 09/27 01:51
Hsins: 多益 900 以上就不愁吃穿我怎麼沒感受到這件事... 09/27 13:52
pmove: 所以樓上沒死啊 XD 09/27 14:29
pmove: 不愁吃穿,最低限度來講,就是沒餓死沒凍死的意思 XD 09/27 14:46
leolarrel: 沒有多益也沒關係,洗個四大文組就能當碼農了 09/27 17:42
leolarrel: 還有我第一次看到不愁吃穿是這樣解釋的,真神人! 09/27 17:42
pmove: 咳咳,英文強到一個程度,在業界真的有很大的好處,至少可 09/27 20:27
pmove: 以到普遍福利比較好的外商。 09/27 20:27
s0914714: 英文好對找資料很有用 而且也有利進外商 非常值得投資 09/27 22:12
sherees: 近期收到夯特給的JD 必須英文溝通的團隊年薪多約20~30萬 09/28 01:14
sherees: 而且都是在台灣的遠端缺 09/28 01:15
sherees: 回一下原PO 1.leetcode的話看討論區 會說是用什麼演算法 09/28 01:19
sherees: 跟資料結構 有名詞再去google 09/28 01:20
sherees: 2.跟著專案練習 09/28 01:21
sherees: 3.不一定是需要避免的 重點是可讀性跟效率 09/28 01:23
sherees: 4.我之前是參考google python coding style 但重點還是跟 09/28 01:24
sherees: 團隊配合 通常沒有一定 但好的命名通常需要有良好的英文 09/28 01:24
sherees: 書寫能力 這部分也可以參考軟體版之前關於命名的討論 09/28 01:25
sherees: [心得][英文] 如何命名... 系列文 09/28 01:26
sherees: 另外註解建議用英文 開源社群不是只有華人 09/28 01:32
GTR12534: 阿這不就是第一題嗎?我有看過一個做法是另外做一個 li 09/28 08:28
GTR12534: st 出來,裡面放的是原本給的 list 跟 target 的差,因 09/28 08:28
GTR12534: 為題目限制的關係,新舊 list 只有一個重複的。 09/28 08:28
GTR12534: 類似這樣去最佳化算法。 09/28 08:28
ddavid: 呃,英文學好有好處是沒錯,但把不愁吃穿這樣解的,問題可 09/28 13:12
ddavid: 能在中文啊XDDD 09/28 13:12
ddavid: 底層DS跟演算法確實從C/C++之類的找資源會比較多,Python 09/28 13:13
ddavid: 說真的因為script語言易用的取向,相對不會去重刻底層基礎 09/28 13:14
ddavid: DS了,都拿寫好的用較多。當然要用得好或必要時動手改, 09/28 13:15
ddavid: 基礎還是得打好的。 09/28 13:15
mantour: 演算法有時候會用虛擬碼描述,你自己要培養把虛擬碼寫成 09/29 18:07
mantour: 可以跑的程式的功力 09/29 18:07
pmove: 所謂食衣住行,之所以不說不愁住行,住指的是買房子,行指 10/02 20:19
pmove: 的是買車子,這些都很花錢。而不愁吃穿,指的並不是財富自 10/02 20:19
pmove: 由。撇開最低限度,不餓死不凍死。吃在古代是久久才吃肉, 10/02 20:19
pmove: 你有辦法餐餐吃肉,基本上是不愁吃了。穿在古代長袍馬褂就 10/02 20:19
pmove: 要穿很久,壞了也只能修修補補,不會買新衣服,你有夠多的 10/02 20:19
pmove: 衣服,基本上是不愁穿了。依這個標準,台灣很多人是不愁吃 10/02 20:19
pmove: 穿的…不過考試的話,不愁吃穿,有可能是財富自由的意思 XD 10/02 20:19
b10007034: 現在要改成不愁房車了吧 10/18 16:40
b10007034: 不愁房房更好 10/18 16:40
Schottky: 沒想到在 Python 板可以看到各種不同語言的討論 10/18 17:20