增加網址:
文章備註、標題(會記錄下來,但是暫時不會顯示):
[綜合]無題 無名 ID:MlgvMCwo 2018/01/02(二) 01:52:40.052 No.10599035
評分:0, 年:0, 月:0, 週:0, 日:0, [+1 / -1] 最後更新:2018-01-01 18:49:33
附圖
請問睿智深夜程式島民

最近開始在學寫程式,才剛到猜數字迴圈的地方我就卡住了
已經看過解答了,形狀完全和我寫得不一樣
但我好想讓我努力好久的這個東西成功喔...
無題 無名 ID:ua2N.UE2 2018/01/02(二) 01:57:19.898 No.10599055
先進迴圈在判斷阿
無題 無名 ID:Thg4mQMo 2018/01/02(二) 02:02:34.261 No.10599077
>>10599035
https://www.google.com/doodles/celebrating-50-years-of-kids-coding

先來ㄉㄨㄞ ㄉㄨㄞ吧
無題 無名 ID:7FVdmXm6 2018/01/02(二) 02:03:29.625 No.10599080
附圖
c語言的
無題 無名 ID:EM9b.WHQ 2018/01/02(二) 02:04:49.453 No.10599083
while拉到最外層
無題 無名 ID:cAwYG.LA 2018/01/02(二) 02:06:43.378 No.10599088
看鋪懂你在寫什麼...只知道是拍桑
用一個迴圈 猜到數字就跳出去就可以了
無題 無名 ID:Thg4mQMo 2018/01/02(二) 02:08:52.879 No.10599099
還有建議你同一個動作如果用到兩次以上建議做成副程式

會方便自己閱讀
無題 無名 ID:Z9kfjfRc 2018/01/02(二) 02:13:52.195 No.10599111
學程式一定要學會的技能: 空運行

覺得空運行太難的話就在中間塞一句print("checkpoint x")讓自己知道程式正在走哪一個block

熟習了這個技巧後再學學IDE的debug功能, 其實就是不用塞print也能查看程式走到哪跟所有變數的值

會這些除錯技巧就會學得順很多
無題 無名 ID:65ql3ij6 2018/01/02(二) 02:14:07.505 No.10599114
你判斷的點怪怪的

正確應該是要
if g<5
...內容
else if g>5
...內容
else //其餘,只有g=5這種可能
...內容

這是判斷的三種條件
想要猜錯無限循環只要最外層再加while就行
無題 無名 ID:1jPSxnfM 2018/01/02(二) 02:16:55.048 No.10599127
while guess != 5:
guess = input("guess the number: ")

guess = int(guess)

if guess == 5:
print("you win finally!")

沒在寫python
一開始看感覺沒問題
跑了才發現判斷怪怪的
應該是弱型別在搞怪
進迴圈後guess重輸入就變字串了
但是判斷一直用數字比對
字串!=數字 就壞掉了
把if判斷改成 if guess == '5' 這樣也能過
無題 無名 ID:YcydfEb2 2018/01/02(二) 02:35:29.160 No.10599195
附圖
參考就好
無題 無名 ID:HSvycbLI 2018/01/02(二) 02:40:37.924 No.10599205
就只是迴圈邏輯
把if、while的意思搞懂後認真想一下就應該要知道了
不清楚的話就像上面說的,每一行都插一個print讓你知道實際執行的順序


>>10599195
不要寫這種怪東西毒害新手啦
無題 無名 ID:MlgvMCwo 2018/01/02(二) 02:41:58.758 No.10599208
附圖
幹破你娘終於成功了QAQ!!
興奮到差點叫出來
島民大感謝啦!
無題 無名 ID:ol9LEIqc 2018/01/02(二) 02:45:56.530 No.10599211
>>10599208
你的下一步是
讓電腦隨機抽數字
讓電腦能判斷使用者輸入的是甚麼型態的變數並raise error

其實都很簡單啦 試試看吧
無題 無名 ID:EM9b.WHQ 2018/01/02(二) 02:49:27.030 No.10599220
>>10599195
try這種指令對新手來說根本是毒品
無題 無名 ID:1jPSxnfM 2018/01/02(二) 02:50:38.314 No.10599224
回覆: >>10599242
附圖
>>10599208
勸你回一下我喔
你這樣整個大改是有沒有知道原本的為什麼不行
你不講清楚我睡不著喔
無題 無名 ID:MlgvMCwo 2018/01/02(二) 02:57:29.046 No.10599242
>>10599224
額,因為沒有先進迴圈的關係嗎OAO?
無題 無名 ID:zc6w6gaU 2018/01/02(二) 03:02:12.230 No.10599254
>>10599242
你也不講原本的程式到底是完全沒辦法執行 還是輸入某數字會錯誤
無題 無名 ID:zc6w6gaU 2018/01/02(二) 03:04:40.551 No.10599260
回覆: >>10599277
>>10599242
原PO的程式碼
最前面你有把input轉成int在給guess
while迴圈卻沒有
無題 無名 ID:1jPSxnfM 2018/01/02(二) 03:04:47.858 No.10599261
>>10599242
你一開始的int(g)是為了把輸入的字串型態改成整數型態
你下面的input卻沒轉換型態
if guess == 5 此時重新輸入的guess是字串'5'
python判定他跟數字5是不同的東西
自然就進入無限迴圈了
無題 無名 ID:65ql3ij6 2018/01/02(二) 03:05:54.899 No.10599262
寫程式又不是一瞬間變強的
原PO想也知道一定是抄一抄腦袋打到一下就剛好寫對
反正學習都從模仿開始
多寫多抄哪天突然就通了 很正常

沒必要一直下指導棋吧= =
無題 無名 ID:Thg4mQMo 2018/01/02(二) 03:06:02.470 No.10599263
>>10599254
在while guess != 5 時玩家不知道大還小
無題 無名 ID:MlgvMCwo 2018/01/02(二) 03:06:55.661 No.10599265
>>10599254
原本的是可以執行

就是打正確的就沒事
打大或小於於正確答案的會跑到try it again
之後輸入的答案就完全不會判定正確與否這樣
無題 無名 ID:Thg4mQMo 2018/01/02(二) 03:07:49.801 No.10599267
回覆: >>10599271
>>10599265
因為你在while guess != 5 之後就沒給判別了
無題 無名 ID:MlgvMCwo 2018/01/02(二) 03:10:29.835 No.10599271
回覆: >>10599280
>>10599261
>>10599267
等等,所以我原本的程式碼,只要下面的input只要多改了字串型態就成功了嗎?!!?
無題 無名 ID:zc6w6gaU 2018/01/02(二) 03:10:41.862 No.10599274
>>10599265
有看出來了 猜錯重猜你沒轉input的型別
>>10599261講得比較詳細
無題 無名 ID:HSvycbLI 2018/01/02(二) 03:11:34.859 No.10599277
>>10599260
>>10599261
他有更根本的問題,你們抓這點無關緊要的來講...
無題 無名 ID:Thg4mQMo 2018/01/02(二) 03:13:17.548 No.10599280
>>10599271
還有
while的迴圈內也要加上 too low,too high的判別
不過這樣前面的if就多於了
無題 無名 ID:ol9LEIqc 2018/01/02(二) 03:13:44.968 No.10599281
太久沒用python忘了
設變數一開始不宣告型態也可以...?
就算這很方便 變數還是宣告一下型態比較好吧
無題 無名 ID:ol9LEIqc 2018/01/02(二) 03:15:39.459 No.10599286
>>10599277
一樣一樣慢慢來啊 邏輯好不好先不說
出錯總要知道錯在哪
無題 無名 ID:zc6w6gaU 2018/01/02(二) 03:16:19.168 No.10599290
>>10599277
>>但我好想讓我努力好久的這個東西成功喔...
原PO就是想讓原本的程式碼成功阿...
無題 無名 ID:Thg4mQMo 2018/01/02(二) 03:21:28.734 No.10599296
附圖
無本文
無題 無名 ID:HSvycbLI 2018/01/02(二) 03:21:32.509 No.10599297
原PO一開始的版本更根本的問題是if跟while放反了
一堆人在那邊吵第二次input沒有轉型
媽的,input根本就不該出現第二次好嗎

結果原PO自己都搞懂了還一堆北七在講轉型
我看1jPSxnfM zc6w6gaU Thg4mQMo都是沒比原PO好多少的菜逼巴來亂的吧
無題 無名 ID:Thg4mQMo 2018/01/02(二) 03:22:56.028 No.10599300
回覆: >>10599313
>>10599297
北七
他都說想要原本的程式可以執行
當然告訴他錯在哪阿
無題 無名 ID:zc6w6gaU 2018/01/02(二) 03:26:17.110 No.10599308
>>10599297
要邏輯正確最佳解的話
>>10599195
已經給啦
無題 無名 ID:HSvycbLI 2018/01/02(二) 03:29:08.366 No.10599313
>>10599300
while寫在if下面分裂成兩塊的結構本來就是錯的
再怎麼改也都是狗屎爛code,是要改三小
你怎麼不乾脆把if寫個10層,下面接1024個while算了
「我好想讓我努力敲了1024次的這東西成功喔...」
毅力不是用在這種地方的好嗎

菜逼巴就菜逼巴,乖乖閉嘴沒人會罵你
幹嘛沒事跳出來誤導原PO
我看給>>10599195那個寫怪code唬爛原PO的教都比你們好
無題 無名 ID:Thg4mQMo 2018/01/02(二) 03:39:06.805 No.10599328
>>10599313
自己實作比看例題好的地方是
藉由修正自己的程式可以知道哪裡邏輯上的用法錯誤
更加了解語法應用的地方
而不是從跟本上否定
先告訴她 迴圈內應該加判別式
再告訴他 重複的判別式 無意義
他自己就會修正啦

不然回他一句去看課本不就得了
無題 無名 ID:MlgvMCwo 2018/01/02(二) 03:46:00.980 No.10599332
>>10599313
真的,我分兩塊寫到後面也覺得這樣很蠢..

這個,我原PO
已經知道大家都是熱心島民惹,超級感謝大家提供各種建議教學啦
剛剛那個try指令雖然知道可能是惡搞,但還是好奇的把它輸進去玩玩看了(一樣效果)XD,我還是很開心ㄛ

然後已經知道原本的程式碼就是很笨的一個程式碼了,但還是很感謝島民想指點原本code的心喔,果然島民最溫馨惹\QWQ/
無題 無名 ID:Thg4mQMo 2018/01/02(二) 03:47:05.429 No.10599335
回覆: >>10599343
>>10599332
tyr 才不是惡搞

在於判別型態錯誤很好用
無題 無名 ID:rJNFVH8s 2018/01/02(二) 03:50:07.274 No.10599339
回覆: >>10599343
>>10599332
try不是惡搞
那是個很好用的工具
好用到很容易讓新手養成過度依賴try的壞習慣
無題 無名 ID:xI/iSJp. 2018/01/02(二) 03:50:44.616 No.10599340
>>10599332
寫程式本來就要考慮到各種情況
因為你不能確定使用者會乖乖照你的意思操作
不使用 try 才會被惡搞
到時候軟體當掉被投訴一樣是苦到自己
無題 無名 ID:hGfRwpDo 2018/01/02(二) 03:52:04.713 No.10599343
>>10599339
>>10599335
好喔!
但我想我可能還要先學到哪裡才會真正領悟OAQ
無題 無名 ID:HSvycbLI 2018/01/02(二) 03:56:09.716 No.10599348
其實我會說>>10599195是怪東西,是因為ans
那個ans根本就不是answer的意思,原PO這種菜鳥會搞混
我不知道他是故意亂寫還是自己也沒想清楚,但都一樣不建議原PO參考他

不過原PO現在搞懂了這題目,就可以研究一下他的code
他那篇確實可以正常執行,只是不適合給新手當範例而已
無題 無名 ID:Tt7hfEQg 2018/01/02(二) 04:00:34.103 No.10599351
回覆: >>10599355
>>10599348
ans就答案5啊有什麼問題嗎
無題 無名 ID:Tt7hfEQg 2018/01/02(二) 04:05:40.743 No.10599355
>>10599351
沒事 我看懂了
ans跟後面判斷一點關係也沒有
無題 無名 ID:xI/iSJp. 2018/01/02(二) 04:18:10.588 No.10599362
>>10599348
的確是不建議這樣寫
因為用int來當bool雖然可相容於最古早的ANSI C
但新式語法都要求嚴謹,最好還是用 ture 和 false(最好是連用0/1來作為判斷都不要)
無題 無名 ID:UkXZqNDA 2018/01/02(二) 05:44:32.231 No.10599431
>>10599035
肥宅串又來...
無題 無名 ID:laumUEmw 2018/01/02(二) 09:03:29.951 No.10599695
>>10599035
努力好久?
你一定搞錯了什麼...
基本上程式語言就跟學外國語一樣
一開始就是照表操課照著念而已,
等到熟悉了他的原理跟架構才開始重組,
而不是一開始就想自創。
打個比方,你還不會英文的時候,難道是先
自創語言嗎?