關(guān)于sys.stdin輸入和京東筆試第一題'分解整數(shù)'

本來4月9號的京東第一題很簡單,但是因為對sys.stdin操作不熟,導(dǎo)致程序通不過。

補充注意:

派枇客網(wǎng)官方輸入案例適合于測試用例輸入是單行

#python
import sys
try:
    while True:
        line = sys.stdin.readline().strip()
        if line == '':
            break
        lines = line.split()
        print int(lines[0]) + int(lines[1])
except:
    pass
#python3
import sys 
for line in sys.stdin:
    a = line.split()
    print(int(a[0]) + int(a[1]))

輸入部分

python環(huán)境: 2.7.3

按照題目的意思:
第一行輸入時N,然后剩余N行輸入要處理的數(shù)字灼捂。

思路解釋:

  1. 最外層while循環(huán)是應(yīng)付爬肜客網(wǎng)環(huán)境,應(yīng)付多個測試用例輸入悉稠。(暫時未驗證宫蛆,如果普通題目這層可不用)
  2. try...except... 如果讀取錯誤就跳出try到except
  3. 先用sys.stdin.readline().strip()讀取第一行,然后再用以下循環(huán)讀取指定的行數(shù)
            for i in range(m):
                print 'TDDO2'
                line = sys.stdin.readline().strip()

中間遇到的坑的猛,待解決

for line in sys.stdin:

讀取遇到空行時就會出錯到except

最終版的輸入部分:

while 1:
    print 'Start'
    try:
        while True:
            a = []
            print 'TODO: Start A CYCLE:',a
            # print ''.join([sys.stdin.readline() for i in range(3)])
            # for line in sys.stdin:
            m = sys.stdin.readline().strip()
            m = int(m)
            for i in range(m):
                print 'TDDO2'
                line = sys.stdin.readline().strip()
                if not line:
                    # break
                    break
                else:
                    a.append(int(line))
                print 'test a:',a
        #   a = sys.stdin.strip()
...
...
...

    except:
        print '      OK,the script is over\n\n'

附1: 字符拼接操作

方法1: 用reduce(lambda x,y: str(x)+str(y),L0)TODO:for line in sys.stdin: if 這里怎么判斷空行或者方法2

方法2: “”.join(L)
拼接 數(shù)字的list L0耀盗, 要首先將數(shù)字轉(zhuǎn)換成字符形成的list L=map(str,L0)

附2:京東筆試第一題

#codng=utf-8
'''
JD筆試題
算出一組數(shù)的是否分解成偶數(shù)和奇數(shù)的和想虎,如果是,就顯示叛拷,如果沒有舌厨,就No
示范輸入:
2
10
5
示范輸出
5 2
No
'''
import sys
import math

while 1:
    print 'Start'
    try:
        while True:
            a = []
            print 'TODO: Start A CYCLE:',a
            # print ''.join([sys.stdin.readline() for i in range(3)])
            # for line in sys.stdin:
            m = sys.stdin.readline().strip()
            m = int(m)
            for i in range(m):
                print 'TDDO2'
                line = sys.stdin.readline().strip()
                if not line:
                    # break
                    break
                else:
                    a.append(int(line))
                print 'test a:',a
        #   a = sys.stdin.strip()
            # if a == '':
            #   print 'NULL'
            #   break
            # a = [10,5]
            print a
            def if_num(x,y):
                if (x%2 == 0 and y%2 != 0) or (x%2 != 0 and y%2 == 0):
                    return True
                else:
                    return False
            def de_num(z):
                '''
                x < y
                '''
                # z = int(z)
                print 'de_num runs'
                L = []
                smid = math.sqrt(z)
                if smid == int(smid):
                    x = int(smid) - 1
                    y = int(smid) + 1
                else:
                    x = int(smid)
                    y = int(smid) + 1
                # y0 = y
                # print x,y
                for y0 in range(y,z+1):
                    # if 
                    # while (x0 * y) < z:
                    #   y += 1
                    for x0 in range(1,x+1):
                        if (x0 * y0) < z:
                            continue
                        elif (x0 * y0) > z:
                            break
                        else:
                            if if_num(x0,y0):
                                L.append(y0)
                                L.append(x0)
                if L:
                    print L
                    # TODO: 直接用join就調(diào)到except部分,因為try出錯直接跳到except部分胡诗,不會報錯
                    # for i in range(len(L)):
                    #   # if i == 0:
                    #   #   s.join(L[i])
                    #   # else:
                    #   #   s.join(' '.join(L[i]))
                    #   print 'WAHT'
                    #   # s += L[i]
                    #   s.join(L[i])
                    # s.join(str(L))

                    # 方法1
                    s1 =reduce(lambda x,y:str(x)+str(y),L)
                    print 'This is result:',s1
                    # 方法2
                    L_2 = map(str,L)
                    s2 = ' '.join(L_2)
                    print 'The 2 result:',s2
                else:
                    print 'No'
            
            for x in a:
                de_num(int(x))
                # print '\n'
            print '\n'

    except:
        print '      OK,the script is over\n\n'

程序測試

> ================================ RESTART ================================

Start
TODO: Start A CYCLE: []
1
TDDO2
12
test a: [12]
[12]
de_num runs
[4, 3, 12, 1]
OK,the script is over


Start
TODO: Start A CYCLE: []
2
TDDO2
5
test a: [5]
TDDO2
6
test a: [5, 6]
[5, 6]
de_num runs
No
de_num runs
[3, 2, 6, 1]
OK,the script is over


Start
TODO: Start A CYCLE: []

> ================================ RESTART ================================

Start
TODO: Start A CYCLE: []
1
TDDO2
12
test a: [12]
[12]
de_num runs
[4, 3, 12, 1]
This is result: 43121
The 2 result: 4 3 12 1


TODO: Start A CYCLE: []
2
TDDO2
10
test a: [10]
TDDO2
8
test a: [10, 8]
[10, 8]
de_num runs
[5, 2, 10, 1]
This is result: 52101
The 2 result: 5 2 10 1
de_num runs
[8, 1]
This is result: 81
The 2 result: 8 1


TODO: Start A CYCLE: []
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末淌友,一起剝皮案震驚了整個濱河市二汛,隨后出現(xiàn)的幾起案子肴颊,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丘侠,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機担神,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門孩锡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來躬窜,“玉大人荣挨,你說我怎么就攤上這事甚纲。” “怎么了鹃操?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我仪壮,道長积锅,這世上最難降的妖魔是什么缚陷? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任箫爷,我火速辦了婚禮硫痰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘柱徙。我一直安慰自己护侮,他們只是感情好蠢挡,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著涧卵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪戈锻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天懒震,我揣著相機與錄音办龄,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛材失,可吹牛的內(nèi)容都是我干的恭应。 我是一名探鬼主播昼榛,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼环鲤,長吁一口氣:“原來是場噩夢啊……” “哼吵冒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起西剥,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤痹栖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后瞭空,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體揪阿,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年咆畏,在試婚紗的時候發(fā)現(xiàn)自己被綠了南捂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡鳖眼,死狀恐怖黑毅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情钦讳,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布枕面,位于F島的核電站愿卒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏潮秘。R本人自食惡果不足惜琼开,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望枕荞。 院中可真熱鬧柜候,春花似錦、人聲如沸躏精。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽矗烛。三九已至辅柴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背碌嘀。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工涣旨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人股冗。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓霹陡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親止状。 傳聞我的和親對象是個殘疾皇子穆律,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 前言 最先接觸編程的知識是在大學(xué)里面峦耘,大學(xué)里面學(xué)了一些基礎(chǔ)的知識,c語言旅薄,java語言辅髓,單片機的匯編語言等;大學(xué)畢...
    oceanfive閱讀 3,095評論 0 7
  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項目接著寫寫一名3年工作經(jīng)驗的J...
    燕京博士閱讀 7,583評論 1 118
  • 〇少梁、前言 本文共108張圖洛口,流量黨請慎重! 歷時1個半月凯沪,我把自己學(xué)習(xí)Python基礎(chǔ)知識的框架詳細梳理了一遍第焰。 ...
    Raxxie閱讀 18,966評論 17 410
  • .bat腳本基本命令語法 目錄 批處理的常見命令(未列舉的命令還比較多,請查閱幫助信息) 1妨马、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,109評論 1 19
  • 銀行是這樣的一種金融機構(gòu)挺举,要在那里借到錢,除非你可以證明自己不需要錢烘跺。(喜劇演員Bob Ho銀行是這樣的一種金融機...
    叫大爹閱讀 495評論 0 0