[綜合]無題 無名 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
>>10599035https://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
無題 無名 ID:1jPSxnfM 2018/01/02(二) 02:50:38.314 No.10599224 無題 無名 ID:MlgvMCwo 2018/01/02(二) 02:57:29.046 No.10599242 無題 無名 ID:zc6w6gaU 2018/01/02(二) 03:02:12.230 No.10599254 無題 無名 ID:zc6w6gaU 2018/01/02(二) 03:04:40.551 No.10599260 >>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
無題 無名 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 無題 無名 ID:MlgvMCwo 2018/01/02(二) 03:10:29.835 No.10599271 無題 無名 ID:zc6w6gaU 2018/01/02(二) 03:10:41.862 No.10599274
無題 無名 ID:HSvycbLI 2018/01/02(二) 03:11:34.859 No.10599277 無題 無名 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
無題 無名 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 無題 無名 ID:zc6w6gaU 2018/01/02(二) 03:26:17.110 No.10599308
無題 無名 ID:HSvycbLI 2018/01/02(二) 03:29:08.366 No.10599313 >>10599300while寫在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 無題 無名 ID:rJNFVH8s 2018/01/02(二) 03:50:07.274 No.10599339 無題 無名 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
無題 無名 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 無題 無名 ID:Tt7hfEQg 2018/01/02(二) 04:05:40.743 No.10599355
無題 無名 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
無題 無名 ID:laumUEmw 2018/01/02(二) 09:03:29.951 No.10599695
>>10599035努力好久?
你一定搞錯了什麼...
基本上程式語言就跟學外國語一樣
一開始就是照表操課照著念而已,
等到熟悉了他的原理跟架構才開始重組,
而不是一開始就想自創。
打個比方,你還不會英文的時候,難道是先
自創語言嗎?