iT邦幫忙

0

一個python程式執行問題

https://ithelp.ithome.com.tw/upload/images/20190929/20119163Q2A6hmqQxe.jpg
看的一本旗標出版的書「從作中學…」,這三行程式,為何最後執行時會出現一個None?請先進指教

不明
【**此則訊息已被站方移除**】
ccutmis iT邦高手 9 級 ‧ 2019-09-29 11:15:09 檢舉
@cuxiapple
書就跟app一樣,有好的也有爛的,不要挑爛的讀啊,
在挑好的才讀的前提下,多讀書比少讀書好,
我個人是偏好 O'reilly 書商出的,有O六十分....。_。"

1 個回答

2
小魚
iT邦大師 1 級 ‧ 2019-09-29 08:18:57
最佳解答
  1. 下次程式碼請直接貼上文字,並且用兩個```(左上角1左邊的符號)包起來
  2. sayHi('王小明', hi='好久不見') 前面不需要有print, 因為這個函式本身就有print了, 然後因為你的sayHi函式沒有回傳值, 所以要print的時候找不到東西print, 就印出None了, 這算是python的機制.
  3. 如果那本書沒有做說明, 表示這個作者本身應該也不懂吧, 怎麼會這樣寫程式的呢?
看更多先前的回應...收起先前的回應...
csshieh iT邦新手 5 級 ‧ 2019-09-29 08:25:10 檢舉

def sayHi(name, title='先生', hi='你好'):
print(name+title,hi)
return
sayHi('王小明',hi='好久不見')

csshieh iT邦新手 5 級 ‧ 2019-09-29 08:26:28 檢舉

如此就可以解決「None」的問題了,謝謝小魚高手

小魚 iT邦大師 1 級 ‧ 2019-09-29 08:27:14 檢舉
def sayHi(name, title="先生", hi="你好"):
    print(name + title, hi)
    return name
print(sayHi('王小明', hi='好久不見'));

比較一下吧,
因為你return了一個空值(應該是NULL),
所以印出來就變成None.

小魚 iT邦大師 1 級 ‧ 2019-09-29 08:28:34 檢舉

如果有幫助到你,
記得要點一下 最佳解答.

csshieh iT邦新手 5 級 ‧ 2019-09-29 08:33:45 檢舉

王小明先生 好久不見
王小明
以上是你改的程式執行後,多了一個王小明的回傳,所以不該只回傳name

csshieh iT邦新手 5 級 ‧ 2019-09-29 09:19:53 檢舉

def sayHi(name, title='先生', hi='你好'):
d=print(name+title,hi)
return(d)
sayHi('王小明',hi='好久不見')
我想了一下,還是用這種寫法比較有邏輯性,呼叫函數sayHi, 回傳d是一個列印的文字
以上的說明,給有看到的朋友參考

小魚 iT邦大師 1 級 ‧ 2019-09-29 09:32:30 檢舉

正常來說如果是同樣的內容,
只會選擇要在函式裡面列印,
或是回傳字串在外面列印,
通常是不會有裡面有列印,
外面又列印的情況,
當然實際上要看當時的情況來判斷,
這有時候就需要經驗了.

ccutmis iT邦高手 9 級 ‧ 2019-09-29 11:11:37 檢舉

小魚說的沒錯。

樓主的真實問題只有一個,
就是基礎還沒打好,研判可能是自學Python ,
有位邦友 心原一馬他的文章很不錯,提供您參考:
https://ithelp.ithome.com.tw/articles/10211960
https://ithelp.ithome.com.tw/users/20117114/ironman/2513

我要發表回答

立即登入回答