題目:明明的隨機(jī)數(shù)
原題目的表述有點(diǎn)復(fù)雜,我理解下來就是有一組隨機(jī)數(shù)形葬,對其去重之后按升序排序合呐,自己寫了下面的代碼,進(jìn)行測試笙以,沒毛病淌实,可是系統(tǒng)不通過
import sys
l=[]
for n in sys.stdin:
l.append(int(n.strip('\n')))
r = sorted(list(set(l)))
for i in r:
print i
下面是我學(xué)習(xí)的通過代碼:
while True:
try:
nums = [int(raw_input()) for _ in range(input())]
print '\n'.join(map(str, sorted(set(nums))))
except EOFError:
break
有以下幾個知識點(diǎn):
1、單下劃線的含義
有三種:
1)在解釋器中:在這種情況下, “_”代表交互式解釋器會話中上一條執(zhí)行 的語句的結(jié)果。
2)作為一個名稱:這與上面一點(diǎn)稍微有些聯(lián)系拆祈,此時“_”作為臨時性的名稱使用恨闪。
3)國際化:也許你也曾看到“_”會被作為一個函數(shù)來使用骑祟。
在這個例子中帚湘,應(yīng)該是第二種用法
不過還沒有弄明白為什么這么寫
2、使用input和raw_input都可以讀取控制臺的輸入媒峡,但是input和raw_input在處理數(shù)字時是有區(qū)別的
當(dāng)輸入為純數(shù)字時
input返回的是數(shù)值類型淤年,如int,float
raw_inpout返回的是字符串類型钧敞,string類型
輸入字符串為表達(dá)式
input會計(jì)算在字符串中的數(shù)字表達(dá)式,而raw_input不會麸粮。
3溉苛、map函數(shù)將set中的每個元素轉(zhuǎn)換為字符
4、sorted排序不會影響原列表
另外還有一種寫法:
import sys
while True:
try:
n = int(sys.stdin.readline())
res = []
for i in range(n):
res.append(int(sys.stdin.readline()))
for i in sorted(set(res)):
print i
except:
break
這種寫法中sys.stdin.readline()是讀入一行弄诲,然后進(jìn)行處理愚战,不用考慮換行符了
參考資料:
http://blog.csdn.net/kjing/article/details/7450146
http://python.jobbole.com/81129/
https://www.nowcoder.com