ಠ_ಠ
python怎麼這麼難!!
我的邏輯怎麼這麼爛!!
ಠ_ಠ
教授出這甚麼題目!!!!
prince6843
需要幫忙嗎
ಠ_ಠ
王子大大是好人!!
ಠ_ಠ
https://images.plurk.com/2KrCTW0kcyRt0hrPwlIZY8.png
想請教一下這個問題是怎麼回事?
bean10
type(n)就好 不用再寫type(p[n])
bean10
你這樣寫的意思是n是1 1 1 1 1 'e' ' '
前面五行會對是因為p[1]是1
但是第六行n是'e' 所以p[e]會type error
ಠ_ಠ
哦哦 解決了!! 原來如此!!
ಠ_ಠ
我繼續琢磨一下,等等繼續問
bean10
好的 加油!
bean10
題外話 我ID的數字好二進位
ಠ_ಠ
先謝謝bean大大!!!
ಠ_ಠ
10 就是十進位的 2吧
bean10
對啊XDD
plum1253
工程師路過卡個幫解題,新手辛苦了。
bean10
plum1253: 那工程師大大可以幫我解C嗎
plum1253
bean10: 有點久沒寫,不介意的話貼看看。
bean10
沒事 目前還沒有遇到問題 因為我還在逃避問題
plum1253
bean10:
prince6843
ಠ_ಠ: 乾 抱歉我跑去洗澡了XDDD 真D抱歉
至於那個for n in p,你可以想成是 迴圈每一次都依序取一個p裡面的物件(取名叫n)出來做事情,做完就丟掉,一個一個 直到取完為止

我老師以前講解是:p就像一包mm巧克力
for n in p: 吃掉
就等於n是我挖出來的一顆巧克力,挖出來做(迴圈裡)「吃掉」的動作,然後再挖下一個 直到沒有巧克力。
Ps. 只要不要動到p裡面的值,基本上p不會變,不是真的被吃掉 或被刪掉XD
plum1253
順帶一提吼,我當年小大一學程式的時候,上了整整半年C啥屁都不會。後來讀研有具體需求,花兩三個禮拜專心練完整本入門習題,再寫個小專案(遊戲外掛的外掛)就算比較上手了。如果有心要學,還是建議做完基礎題目之後,弄個小專案來炸一下自己,會比較有效率。
prince6843
希望噗主對for有比較清楚的概念
ಠ_ಠ
哇!!! 感謝王子的細心解釋!!!
ಠ_ಠ
也感謝路過的梅子大大!!!
ಠ_ಠ
我覺得教授的題目已經像個小專案了
雖然我沒做過專案不知道長甚麼樣子
ಠ_ಠ
現在是卡在要判斷輸入的字符是否含有數字, 但是輸入的字符可以含有空格,所以不能用isdigit去搞
ಠ_ಠ
噗煮再去想一下......
plum1253
prince6843
ಠ_ಠ: 試試.split() 這個function
ಠ_ಠ
後來用isdigit搞定了!
ಠ_ಠ
想請大家提示一下,如果說要找list中某個單字只能用特定字符組成,大概要怎麼做?
ಠ_ಠ
例如 https://images.plurk.com/7Fx7416xosWeaXTk6slZiz.png
ಠ_ಠ
要從a中找到由string b裡的字母(也就是g,i,d)組成的單字
ಠ_ಠ
我想說把a的單字拆分成字母,一個一個跟b去比較
ಠ_ಠ
https://images.plurk.com/5P9XgXURiURuJAeZPLFEx9.png
https://images.plurk.com/NKOHk5YJawGy3pbRF2eUt.png
ಠ_ಠ
好像思路整個錯了
prince6843
請問是說 b如果是gid
Output 只能是gid dig idg 之類的嗎?
ಠ_ಠ
對對
ಠ_ಠ
https://images.plurk.com/612B085g1kW5DfRH7MNaYq.png
ಠ_ಠ
新的沒卵用的進度,哇少了一個for
prince6843
我的想法是,可以把a裡面的b字母都替換成””(空字串),如果a單字換完變空字串就可以輸出了(代表a單字裡的字母都是b的
ಠ_ಠ
喔喔 謝謝prince!
ಠ_ಠ
我後來又多問幾個人 然後採用了把a單字都換成字母
在建立一個空的list,把不符b的單字都丟進去 再比對
ಠ_ಠ
然後我把式子加進原算式跑過久
ಠ_ಠ
(題目的a是一個1m txt文件)
prince6843
ಠ_ಠ: 為什麼最後還要再比對呀
ಠ_ಠ
因為存進去的是 不是從b字母組成的單字
所以跟a比對之後可以得到 只從b字母組成的單字
ಠ_ಠ
https://images.plurk.com/7waH7HQrMTQ5cMIFrdNgsi.png
ಠ_ಠ
如果是 in bb就範圍太大了
prince6843
這樣的確滿耗能的 畢竟做了兩次for
prince6843
https://images.plurk.com/6UV7cSgVRvMBLNE0DOnZFN.png https://images.plurk.com/7tul58Bl4e0XSgyetCiqLn.png https://images.plurk.com/7kptj6ensL8sSkBGlC0MqZ.png 把幾句程式刪掉了,給你參考看看
prince6843
單講噗主的code的話,噗主的for loop直接寫for word in a ,可以不用再寫a[word],直接aa = list(word)
prince6843
還有另外一種方式是,如圖,加一個flag,之後如果再a單字裡面發現不是b的字母,flag就變false,最後只要看flag如果是維持true就代表都沒有非b的字母,就可以印出來https://images.plurk.com/2MjfmzPt5uy45FrA3JpO0f.png
ಠ_ಠ
prince6843: 哦哦 我看懂王子寫的code了,謝謝你!
不過我這邊題目要求是找一堆單字裡面,由特定字母組成的單字,不是刪除多餘的字母?
prince6843
ಠ_ಠ: 沒關係呀 前面那些都是分辨"是不是特定字母組成的單字"的方法,能夠分辨之後 你要print還是write file都可以
prince6843
像我的第一個方法就是,如果是"特定字母組成的單字",結果就會是空字串("")
我只要最後寫個是空字串就print(word) 就好了
第二個的話就是if flag == True,就print出
ಠ_ಠ
哦哦哦!!!!!我思考一下
ಠ_ಠ
我太感動了 謝謝Prince
ಠ_ಠ
如此簡潔明瞭的code,王子大大是神嗎
prince6843
不客氣啦您過獎了XD 讀研究所 有時候寫出來的東西都沒有用,所以我倒是很喜歡寫這種課堂的作業
當初大一學python的時候 很幸運遇到一個滿會教的老師,很多簡潔的code的觀念都是他教給我的>< 噗主有什麼問題都可以再問~
prince6843
噗幣我心領ㄌ
ಠ_ಠ
你怎麼把噗必退回了
ಠ_ಠ
早知道就鎖閉孔了
prince6843
ಠ_ಠ: 一題而已小事啦 如果以後還需要幫忙再給你投幣XD
ಠ_ಠ
謝謝王子大大
想問一下,其實不太懂為什麼flag==true就print出了?
ಠ_ಠ
這邊邏輯不太好
ಠ_ಠ
就是非指定與指定單字不是會變換true,false嗎?
prince6843
在檢驗之前inlist_flag = True,在後面的迴圈裡檢查b字母的時候,如果每個字母都是b的話,就不會走到flag=False了,所以如果一直維持T就等於一直都是b的字母
反之,萬一遇到一個不是b的字母,flag就會變False,後面並沒有程式會再把flag便True,所以一旦flag事F,就代表曾經出現過非b的字
ಠ_ಠ
哦哦哦 原來如此! 可是如果後面又出現b的字母,不會把false轉回來嗎?
ಠ_ಠ
因為程式碼寫的是 =!
prince6843
噢噢 因為我後面寫的程式碼是:
if letter not in b:
flag = False
ಠ_ಠ
歐歐!!
plum1253
prince講得很清楚了。那我來教個略進階的list comprehension,這是個犧牲可讀性把簡單的小段落更加簡化的寫法,習慣的話會很方便。
https://images.plurk.com/3zy6zP1t50xD9wNo2Qa6NA.png
prince6843
plum1253: 來睡 (不是
曾經看過這種寫法 真的⋯我段位還不夠XDD感謝梅子的解釋
plum1253
prince6843: 個人理解上,list comprehesion是凸顯重點的倒裝句,把做什麼事(print)拉到前面,限定對哪些元素做事的for跟if放在後面。這確實需要習慣一下,也因為可讀性而有點爭議啦XD

總之,晚安囉
ಠ_ಠ

感謝梅子大大的補充!
有點看不懂,之後再來慢慢啃好了
大家是真的好厲害
ಠ_ಠ
哈哈哈哈 我現在才發現我那天熬夜太多,這噗裡講的話不連貫 https://images.plurk.com/zaWc41RgkHv1UxgpBOMm5.png
載入新的回覆