PTT評價

[問卦] 初學Python是不是養成一堆壞習慣?

看板Gossiping標題[問卦] 初學Python是不是養成一堆壞習慣?作者
dixitdeus
(dixitdeus)
時間推噓44 推:56 噓:12 →:103

現在流行入門學Python,真的會養成一堆壞習慣耶

昨天看學生寫的code,一堆人在那邊:
for s in list:
If list.index(s) % 2 == 0

看到快吐血
直接用for each loop,每次都給我call 函式找index

還有人寫:
b = [1,2,3]
c = [4,5,6]


c = b[0]

直接把裝list的變數拿來裝int



可以理解python用於資料科學、機器學習的優勢

但初學者就學Python是不是會養成一堆壞習慣啊?

可以從C開始學嗎….

--

※ PTT 留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 71.230.161.115 (美國)
PTT 網址

sealdoom 02/02 00:55滾 你沒學生

DarkIllusion 02/02 00:56你說的問題好像都不算什麼問題

Index()call一次就O(n) 在for loop裡面每個項目都call index(),想操死電腦啊?

qazws08 02/02 00:56不是碼農的話,能無痛轉matlab不好嗎

infoman 02/02 00:56你現在知道有人講 語言聽得懂就好 是啥了

cisyong 02/02 00:57C學了最後也是用PYTHON

Ahhhhaaaa 02/02 00:58不是ˉ第二個寫這樣有什麼意義啊

※ 編輯: dixitdeus (71.230.161.115 美國), 02/02/2022 01:00:12

Ahhhhaaaa 02/02 00:58看不懂幹嘛寫c = b[0],意義在哪

Ahhhhaaaa 02/02 00:58然後第一個反而不明白有什麼問題?

沒效率,你這樣做python會自己loop過一圈幫你找index

easyfish 02/02 01:00現代人還養成吃米不懂種稻的壞習慣勒

※ 編輯: dixitdeus (71.230.161.115 美國), 02/02/2022 01:01:40

stlevi811101 02/02 01:00沒差吧 能動就好

w60904max 02/02 01:0084 初學者學java還不是會寫成這樣

stlevi811101 02/02 01:00記憶體那麼便宜

DarkIllusion 02/02 01:01第一個問題並不是python造成的

stlevi811101 02/02 01:02等數據多起來 就知道痛了

DarkIllusion 02/02 01:02第二個不算是問題

fungsui 02/02 01:03第一個問題是寫的人太智障 不要怪語言好

fungsui 02/02 01:03嗎==

venomsoul 02/02 01:03Try, except, 嘻嘻

teddyissad 02/02 01:04阿就給太多方便當隨便,用C系列沒這

teddyissad 02/02 01:05種問題

tengyoyo 02/02 01:05第一個是被python函數寵壞的

tengyoyo 02/02 01:05第二個是沒被資料型態搞死過

dces4212 02/02 01:07%2會不會被優化成&1呀

他們還沒教到bit operation

Ahhhhaaaa 02/02 01:07c = b[0] 到底有什麼用意我真的看不懂

Godmyfriend 02/02 01:08給你肩膀你不踩 無聊

DarkIllusion 02/02 01:08我覺得怪語言慣壞人這實在有點奇怪

Ahhhhaaaa 02/02 01:08所以前面的c=[4,5,6]就等於沒寫過

w60904max 02/02 01:08第一題原本是要幹嘛

chaosly0124 02/02 01:08又不是寫什麼幾千萬的案子,能動就好

ZMittermeyer 02/02 01:08不知道耶,這個問題我有點不知道正

ZMittermeyer 02/02 01:09確答案,反正你教的本來就是炮灰碼

ZMittermeyer 02/02 01:09農,不會是什麼高等工程師

doro0202 02/02 01:09這些問題只要跟專題或是進業界沒幾個禮

bill403777 02/02 01:09管太多,後面真的出事也不用你擦屁股

doro0202 02/02 01:09拜都會自己不見啊

joygo 02/02 01:09因為不會壞XD

ZMittermeyer 02/02 01:09台灣人水準就那樣,乾脆視為提升運

ZMittermeyer 02/02 01:09算需求的貢獻

※ 編輯: dixitdeus (172.58.205.46 美國), 02/02/2022 01:11:46

w60904max 02/02 01:11for i, s in enumerate(list) 要這個?

yes,或是 for i in range(len(list))

※ 編輯: dixitdeus (172.58.205.46 美國), 02/02/2022 01:13:28

IsadQQ56 02/02 01:13找index用enumerate==

w60904max 02/02 01:15搞不好要看index去處理值阿==

w60904max 02/02 01:15不過最後會用list[::2]

IsadQQ56 02/02 01:17不知道enumerate時真的會這樣寫 有夠醜=

IsadQQ56 02/02 01:18=

其實也不需要enumerate for 的本質就是檢查條件,只要符合條件就執行

※ 編輯: dixitdeus (172.58.205.184 美國), 02/02/2022 01:19:58

NCUking 02/02 01:21哪來的學店呀 不是Python的問題好嗎

w60904max 02/02 01:24懂你要說什麼了

w60904max 02/02 01:24python loop list太方便 結果忘了基本

w60904max 02/02 01:25其他語言用 int=0 i++的方式去for

silverair 02/02 01:26講真的除非特別要求,不然我寫作業也都

silverair 02/02 01:28用第一直覺下去幹,畢竟作業要處理的運

sweetsmoke 02/02 01:28我們js才不管這些

silverair 02/02 01:29算量即使真的複雜度很高,也根本感覺不

silverair 02/02 01:29出來

silverair 02/02 01:29所以很容易出現超醜的code

baconcsie 02/02 01:294

s860134 02/02 01:30第二個根本不是 python 的問題...

silverair 02/02 01:31題目寫要分析才會乖乖寫

s860134 02/02 01:31變數命名衝突比較接近 clean code 概念

s860134 02/02 01:33你的第一個例子是不是 s 和 x 同一個值?

我寫錯了,是一樣的

kurecarlos 02/02 01:35就一個自以為的廢物

※ 編輯: dixitdeus (172.58.207.249 美國), 02/02/2022 01:37:29

ldeathkiller 02/02 01:43python就只是方便而已 教出了一堆ㄌ

ldeathkiller 02/02 01:43

LincolnBoy 02/02 01:44叫他們乖乖寫java or C++

ldeathkiller 02/02 01:44不過第一題是他不熟python吧 好歹ca

ldeathkiller 02/02 01:44ll個Len去跑或enumerate

s860134 02/02 01:47第一個寫法是有問題的,沒考慮值有重複時

s860134 02/02 01:47總會返回第一個

s860134 02/02 01:48值沒重複或是物件當我沒說

arrenwu 02/02 01:50這跟Python有啥關係嗎?

Chiustin 02/02 01:54第二個從Python角度只是c再開一個新記

Chiustin 02/02 01:54憶體空間 資料型態從list變b[0]

brabra 02/02 02:00直接寫在程式碼裡面,電腦會死當XDD

brabra 02/02 02:01能用二進位就用二進位,能少一個迴圈就少

brabra 02/02 02:02一個,呼叫陣列儘量用同一個區域

arrenwu 02/02 02:02第一個.... 這感覺比較像語法不熟,不然

brabra 02/02 02:02如果只是想跑得動,就算了XDD

arrenwu 02/02 02:02其實他的做法滿迂迴的

rock4308 02/02 02:02我覺得javascript 也差不多

s860134 02/02 02:07學都有開設程式語言介紹基本概念 其實學

s860134 02/02 02:08大學

s860134 02/02 02:09哪種都大同小異 現代語言嘛都是你抄我 我

s860134 02/02 02:09抄你

chunfo 02/02 02:14真要處理大數據就不是能動就好

s860134 02/02 02:19正確性 > 可讀性 > 效能 一般是這樣...

WWIII 02/02 02:23你落伍了 c已經已經跟智障手機一樣

dsa888888 02/02 02:23初學學什麼都一樣 高端自己會想辦法 正

dsa888888 02/02 02:23常人應付完就沒了

gn0111 02/02 02:28有問題不是python

WiserWilly 02/02 02:31線上課程不正規真的很多偷吃步

newwu 02/02 02:36以電腦的角度來看 第二個沒問題啊

newwu 02/02 02:44第一個比較像是沒有演算法的概念

newwu 02/02 02:45這是主要的問題,只會呼叫函數,卻無法想像

newwu 02/02 02:45背後是怎麼運作的

DeepBlue10 02/02 02:56看什麼課的作吧 資結可以 演算法不行

KimWexler 02/02 03:02第一個看不出問題的請回去念演算法

iceyang 02/02 03:02有時候重複使用變數名稱 只是想降低接手

iceyang 02/02 03:03人員的可讀性而已 xD

ruokcnn 02/02 03:05我看不懂你舉的例子他想要幹嘛….

newwu 02/02 03:05還在用a b c當變數名稱的程式,重複使用變

newwu 02/02 03:05數名稱有差嗎

iceyang 02/02 03:09還好我都用xyz

ccjjea 02/02 03:12教他們js先

KJC1004 02/02 03:14明顯就是這個案太廢 還沒看過爛成這樣的

nayeonmywife 02/02 03:20第一段不知道在幹嘛= = 重複兩遍

Sixigma 02/02 03:24這是寫的人沒學好吧,連語言特性都不了

Sixigma 02/02 03:24解,學什麼都一樣

Lowpapa 02/02 03:25大葉大學的吧

xx5244 02/02 03:31先求有功能阿,不然咧,效率本來就後面再

xx5244 02/02 03:31

stitchris 02/02 03:33Python就是給文組自以為很屌的玩具

emptie 02/02 05:11那些換個語言還是沒解決啊

t81511270 02/02 05:24回頭看還蠻有趣的 還call index

leilo 02/02 05:28不是啊你以為他們真的懂原理喔 會出現一堆

leilo 02/02 05:28奇奇怪怪寫法 不就是1.他不懂什麼叫正經解

leilo 02/02 05:28法 2.東抄西抄勉強拼湊出能動的東西

leilo 02/02 05:28這跟用那種語言沒關係 只是因為python這樣

leilo 02/02 05:28就能動而已 反正敷衍過拿得到學分就好

leilo 02/02 05:28這才是真理啊 不管是不是程設都是一樣的

k798976869 02/02 06:15js才醜

Kaids 02/02 06:41關於第一條即便是直接學python都是非常差勁

Kaids 02/02 06:41的style啊。enumerate就是拿來解決這個問題

Kaids 02/02 06:42的啊…

Kaids 02/02 06:44再來我覺得不需要太C/C++本位主義。如果

Kaids 02/02 06:44機器學習用C/C++比較方便的話Google幹嘛寫

Kaids 02/02 06:44python interface?

Kaids 02/02 06:45python很多就拿來寫小script,又不是幾十萬

Kaids 02/02 06:46行的專案必須借助strictly typed language

Kaids 02/02 06:47幫你避免錯誤。

botonchou 02/02 07:03這跟 Python 沒有關係吧 是人的問題

botonchou 02/02 07:03覺得 Python 是給文組的要不要講一下自

botonchou 02/02 07:04己在哪裡高就?

B9702115 02/02 08:55誰叫python要讓人這樣寫

eemail 02/02 09:14學生:我們那個老師很不會教....

backforward 02/02 10:07要好習慣不如先學JAVA或C#

haw561676 02/02 10:16c = b[0] , c是auto 的話不是也沒差?

Fancose 02/02 10:23說記憶體便宜的是沒寫過程式喔,是影響程

Fancose 02/02 10:23式運行速度跟記憶體大小沒關係

Fancose 02/02 10:28高階語言所用的物件本來程式速度就慢了,

Fancose 02/02 10:28沒用好速度更慢

mocca000 02/02 10:30昨天大年初一 你為什麼大年初一改作業

BJkiller 02/02 10:38C就垃圾語言 未來沒人用 老頭子才這麼在

BJkiller 02/02 10:38

hotrain13 02/02 10:39怎麼會有人覺得C以後沒人用XD

kindaichitom 02/02 10:44未來一萬年可能沒人用

kindaichitom 02/02 10:45100年內,C不可能消失的

hegemon 02/02 10:52說C沒人用的太無知了

reemir 02/02 11:00你說的問題都不是問題 改習慣就好

reemir 02/02 11:02說 C 沒用的人要不要先跟 Linus Torvald

reemir 02/02 11:02s 辯論一下

hotrain13 02/02 11:25說C以後沒人用真的有夠無知與

holmes006 02/02 11:32第一個就用range 然後[i%2]可以解決的

holmes006 02/02 11:32事情

holmes006 02/02 11:34說錯,是[2i]

holmes006 02/02 11:36說c沒用的可能不知道python主流的lib都

holmes006 02/02 11:36是用c寫的

MARSCAT 02/02 11:57用python 寫enumerate好嗎,誰在跟你i

MARSCAT 02/02 11:57=1;I++

ljsnonocat2 02/02 12:54如果是資工系 可能還是要從C開始

timofEE 02/02 13:34會養成壞習慣是確實

BBBroflovski 02/02 14:25simple is the best

drinkmuffin 02/02 18:24很多人覺得方便寫就好了,沒去思考

drinkmuffin 02/02 18:24底層實際會怎麼處理,一部分的問題

drinkmuffin 02/02 18:24是現在電腦都太強了,多幾個垃圾步

drinkmuffin 02/02 18:24驟也是沒感覺

kenny2963 02/02 19:02工具本來就是先求能完成才求優化,等

kenny2963 02/02 19:02遇到問題自然會去優化

ekgs 02/02 21:46先學py的人 最大的問題是不知道變數有型別

ekgs 02/02 21:48遇過很多先學py再轉寫其它語言的人搞不懂

ekgs 02/02 21:48int float double差在哪

intrepid123 02/03 02:01沒差 不會寫的 寫C更慘

KH22 02/03 09:10哈哈哈哈