2017-08-09 103 views
1

我正在寫一個小函數,它將小數形式的整數轉換爲其倒數。這就是我定義我的功能至今:將小數形式的整數表示爲倒數的函數

def reciprocal (number): 
     return "1/",number 

這類作品,但問題是,它不打印屏幕上的答案,我想是因爲說我沒print reciprocal(3)它將在屏幕上顯示('1/', 3)而不是1/3。我已經在代碼中嘗試了各種各樣的語音標記和括號組合,但答案仍然有額外的括號和反碼。我正在使用Python 2.7.10,有什麼辦法擺脫這些?或者還有其他簡單的方法來表示一個整數作爲其倒數分數形式的倒數會擺脫它們?謝謝

+1

我已經解釋了一堆東西在我的答案是要弄清楚你的,我想。 – idjaw

回答

4

是。因爲這行其實就是做返回一個元組:

return "1/",number 

如果只是打印:

type(reciprocal(3)) 

你會看到結果將是tuple

爲了保持的功能:你會想要做這樣的事情,而不是

print(reciprocal(3)) 

return "1/{}".format(number) 

現在,上面實際上將返回你一個字符串,而不是一個元組。以上是使用字符串格式的方法,您可以閱讀有關here。最終你正在做的是創建一個看起來像1/x的字符串,其中x將是數字。表示x的方法是使用大括號,然後使用佔位符來設置您傳遞給format的任何內容。閱讀文檔中的更多內容以瞭解其工作原理。

,以幫助擴大它,它實際上看起來分離時喜歡是這樣的:

s = "1/" 

現在,你希望能夠設置你的論點number。字符串對象支持多種方法,其中之一是format。所以你可以簡單地稱之爲:s.format()。但是,這不會按照你想要的方式工作。所以,根據文檔,爲了使用這個format方法,你需要在你的字符串中設置你想要在你的字符串中放置哪個參數。這是通過使用佔位符字符{}來表示的。所以:

s = "1/" 

現在將

s = "1/{}".format(number) 

我們設置我們{}爲我們所希望number是佔位符,我們通過傳遞number以格式分配什麼將在佔位符。

您可以進一步看你怎麼現在有一個字符串,如果你實際上打印結果的type

print(type(reciprocal(3))) 

你會看到它現在是一個str類型。

如Python中的註釋,您可以創建逗號分隔值的元組:

>>> d = 1, 2 
>>> type(d) 
<class 'tuple'> 

這就是爲什麼你的函數返回的元組,因爲事實上你是返回簡單地通過一個分隔的兩個值逗號。

+0

謝謝,這真的很清楚解釋。但是我不明白爲什麼''''''語音標記裏面的'{}'大括號不在外面,因爲如果它在語音標記中不打印大括號? – Ruby

+1

@Ruby這是字符串格式化實現的工作原理。當你在字符串上調用'format'方法時,它會查找該佔位符(佔位符是'{}'),以便將傳遞給'format'方法的參數替換掉。 – idjaw

+0

謝謝,還有,我知道它已被提及很多,但究竟是一個元組是什麼? – Ruby

2

你可以試試這個:

def reciprocal (number): 
    return "1/{}".format(number) 

print reciprocal(4) 
print reciprocal(100) 

輸出:

1/4 

1/100 
+0

謝謝,這是行得通的,但我不明白它的功能如何,請您解釋''1/{}「。format'位? – Ruby

+1

@Ruby字符串格式允許您將任何值類型(字符串或整數)插入到基本字符串中。本質上,它與'「1 /」+ str(number)'相同,但'.format'允許你在間距方面更加精確。 – Ajax1234

+0

好的,謝謝括號裏的{}括號,你爲什麼需要它們? – Ruby

1

現在你回來做,因爲逗號的字符串「1 /」您的號碼的元組。我認爲你想要做的只是返回一個字符串。

喜歡的東西return "1/" + str(number)

+0

謝謝。那麼字符串是可以用','逗號和'+'加上符號連接起來嗎? – Ruby

+1

使用','逗號在括號外的兩個值之間使用時會生成一個元組。它與列表類似,但創建後無法修改。任何'a,b'或'(a,b)'都將是一個元組,而'[a,b]'是一個列表。所有這些都將'a'和'b'作爲單獨的實體;它不會將它們合併到一個字符串中。 '+'是字符串連接器;你可以用加號加入任意兩個字符串。如果'a'和'b'是整數,'+'會嘗試將它們添加爲數字,所以它們需要先用'str()'變成字符串。在這個例子中,'a'是''1 /'','b'是'數字'。 –

0

,如果你想打印一管,也許你可以試試 return ('1/', number)
def reciprocal(number): return ('1/', number) print(reciprocal(4)) In [5]: print (reciprocal(4)) ('1/', 4)