綠色計(jì)算預(yù)賽-第一階段

第一階段

第一關(guān)-字符串反轉(zhuǎn)

將輸入的字符串str進(jìn)行反轉(zhuǎn)。

編程要求

補(bǔ)全右側(cè)inversion(self,str)函數(shù)實(shí)現(xiàn)字符串的反轉(zhuǎn)并返回反轉(zhuǎn)之后的字符串易迹,其中函數(shù)參數(shù)str表示要反轉(zhuǎn)的字符串巾遭。

測試說明

輸入:
hello world
輸出:
dlrow olleh

官方解答:考查了新建列表肉康,用len()函數(shù)求列表的長度、向列表中append()元素灼舍、按照下標(biāo)取出列表中對(duì)應(yīng)的元素

1.1 新建一個(gè)列表吼和,將str列表中的元素倒序append進(jìn)新列表中

#!/usr/bin/env python
# -*- coding: utf-8 -*-
class Task:
    def inversion(self,str):
        # ********* Begin *********#
        new_str = []
        index = len(str) # 計(jì)算列表中元素的個(gè)數(shù)
        while index: 
            index -= 1
            new_str.append(str[index])
        return  new_str
        # ********* End *********#

我的解答:考查列表的切片操作

#!/usr/bin/env python
# -*- coding: utf-8 -*-
class Task:
    def inversion(self,str):
        #********* Begin *********#
        new_str = str[::-1]
        return new_str
        #********* End *********#

第二關(guān)-扔桃子

動(dòng)物園有一只小猴子喜歡吃桃子,不過它有個(gè)很獨(dú)特的習(xí)慣骑素,每次都把找到的桃子分成相等的兩份炫乓,吃掉一份,留一份。如果不能等分厢岂,小猴子就會(huì)丟掉一個(gè)然后再分光督。第二天再繼續(xù)這個(gè)過程,直到最后剩一個(gè)桃子了塔粒,也直接扔掉结借。

有一天,小猴子找到了n個(gè)桃子卒茬,請(qǐng)問船老,它在吃這些桃子的過程中,一共要扔掉多少個(gè)桃子圃酵。

編程要求

  • 補(bǔ)全方法getNum(self,n)柳畔,計(jì)算小猴子總共要扔掉多少個(gè)桃子。將最后的結(jié)果作為函數(shù)的返回值返回郭赐。

具體請(qǐng)參見后續(xù)測試樣例薪韩。

測試說明

樣例1
輸入:
3
輸出:
2
樣例2
輸入:
1544
輸出:
3

官方解答:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
class Task:
    def getNum(self,n):
        #********* Begin *********#
        count = 0 #用來統(tǒng)計(jì)扔掉的桃子的個(gè)數(shù)
        while n :
            if n%2 == 1: # 說明此時(shí)手中所剩的桃子的個(gè)數(shù)為奇數(shù)
                n -= 1 # 扔掉一個(gè)桃子
                count += 1 # 扔掉的桃子的個(gè)數(shù)加一
            else: # 如果此時(shí)手中的桃子的個(gè)數(shù)正好可以平分
                n/=2 
        return count
        
        #********* End *********#

我的解答:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
class Task:
    def getNum(self,n):
        #********* Begin *********#
        sum = 0 
        while n > 0:
            if(n % 2 != 0): # 不能被2整除 即此時(shí)手中的桃子不能平分
                n = n // 2  # python中的整除用//
                sum = sum + 1
            else:  # 如果此時(shí)手中的桃子的個(gè)數(shù)正好可以平分
                n = n // 2
        return sum
        #********* End *********#

第三關(guān)-旋轉(zhuǎn)數(shù)組

在計(jì)算機(jī)中,一張數(shù)字圖像捌锭,可以被看做是一個(gè)矩陣或者說數(shù)組俘陷。

學(xué)過線性代數(shù)的同學(xué)對(duì)矩陣肯定不陌生。一般來說观谦,圖像是一個(gè)標(biāo)準(zhǔn)的矩形拉盾,有著寬度(width)和高度(height)。而矩陣有著行(row)和列(column)豁状,矩陣的操作在數(shù)學(xué)和計(jì)算機(jī)中的處理都很常見且成熟捉偏,于是很自然的就把圖像作為一個(gè)矩陣,把對(duì)圖像的操作轉(zhuǎn)換成對(duì)矩陣的操作泻红,實(shí)際上所有的圖像處理工具都是這么做的夭禽。

所以我們?nèi)绻獙?duì)圖像進(jìn)行操作,其實(shí)也就是在對(duì)一個(gè)數(shù)組進(jìn)行操作谊路。

本關(guān)要求你編寫代碼實(shí)現(xiàn)對(duì)一張圖像的90°旋轉(zhuǎn)讹躯,即對(duì)矩陣的90°旋轉(zhuǎn)。

編程要求

補(bǔ)全函數(shù)rotate(self,metrix)凶异,實(shí)現(xiàn)對(duì)輸入的數(shù)組進(jìn)行旋轉(zhuǎn)的功能蜀撑。
注意:
你必須使用原地算法來旋轉(zhuǎn)圖像,而不能重新創(chuàng)建一個(gè)數(shù)組剩彬,本關(guān)不需要你輸出數(shù)組酷麦,只需要修改數(shù)組metrix即可。

測試說明

輸入:
3 3

1 2 3
4 5 6
7 8 9

原地旋轉(zhuǎn)喉恋,使其變?yōu)?

[7, 4, 1]
[8, 5, 2]
[9, 6, 3]

輸入的3 3是用作構(gòu)建數(shù)組的不會(huì)作為函數(shù)的參數(shù)輸入沃饶,可以忽略母廷。

官方解答: 目前還不太理解,還要總結(jié)矩陣逆時(shí)針旋轉(zhuǎn)90度的情況http://www.reibang.com/p/59bc67c9ed03

#!/usr/bin/env python
# -*- coding: utf-8 -*-
class Task:
    def rotate(self,matrix):
#********* Begin *********#
        length = len(matrix) # 統(tǒng)計(jì)出該矩陣中元素的個(gè)數(shù)
        for i in range(0,length):
            for j in range(0,length - i):
                tmp = matrix[i][j]
                matrix[i][j] = matrix[length - j - 1][length - i - 1]
                matrix[length - j - 1][length - i - 1] = tmp
                
        for i in range(0,length):
            for j in range(0,int(length/2)):
                tmp = matrix[j][i]
                matrix[j][i] = matrix[length - j - 1][i]
                matrix[length - j - 1][i] = tmp
        
#********* End *********#

我的解答:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
class Task:
    def rotate(self,matrix):
        #********* Begin *********#
        matrix[:] = map(list,zip(*matrix[::-1]))
        # matrix[::-1] 先將矩陣的行進(jìn)行倒序操作
        #zip(*matrix[::-1]) 將新矩陣的列當(dāng)成行依次輸出
        
        #********* End *********#

第四關(guān)-計(jì)算日期

我們吃的食物都有保質(zhì)期糊肤,現(xiàn)在食品監(jiān)督管理局想要制作一個(gè)能準(zhǔn)確計(jì)算食品過期日期的小程序琴昆,需要請(qǐng)你來進(jìn)行設(shè)計(jì)。

例如:A食品在2018年1月1日生產(chǎn)馆揉,保質(zhì)期是20天业舍,則它的過期日期在2018年1月21日。

編程要求

補(bǔ)全函數(shù)getDate(self,releaseDate,day)其中releaseDate表示食品出廠日期day表示保質(zhì)期升酣,請(qǐng)根據(jù)傳入的數(shù)據(jù)計(jì)算食品的過期日期舷暮,格式為yyyy-mm-dd4位年份2位月份2位日期。比如:2015-02-19

請(qǐng)嚴(yán)格按照格式書寫噩茄,不能出現(xiàn)其它文字或符號(hào)下面,并將最終結(jié)果做為函數(shù)的返回值返回。

測試說明

樣例1:
輸入:
2016-01-01绩聘,20
輸出:
2016-01-21

官方解答:考查對(duì)datetime類的了解沥割,該類的各種方法

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import datetime
class Task:
    def getDate(self,releaseDate,day):
         # 先將releaseDate 以-為分割,分到list中(此時(shí)各個(gè)元素是string類型的)凿菩,再將字符串強(qiáng)制類型轉(zhuǎn)化為整型
        yy,mm,dd = [int(i) for i in releaseDate.split("-")]
        return str(datetime.date(yy,mm,dd)+datetime.timedelta(days=day))

我的解答:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import datetime
class Task:
    def getDate(self,releaseDate,day):
        #********* Begin *********#
        start = datetime.datetime.strptime(releaseDate, "%Y-%m-%d")#轉(zhuǎn)化成datetime格式
        end = (start + datetime.timedelta(days=day)).strftime("%Y-%m-%d")#轉(zhuǎn)換標(biāo)準(zhǔn)的輸出格式
        
        return end 
        #********* End *********#
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末机杜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蓄髓,更是在濱河造成了極大的恐慌叉庐,老刑警劉巖舒帮,帶你破解...
    沈念sama閱讀 212,080評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件会喝,死亡現(xiàn)場離奇詭異,居然都是意外死亡玩郊,警方通過查閱死者的電腦和手機(jī)肢执,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來译红,“玉大人预茄,你說我怎么就攤上這事≌旌瘢” “怎么了耻陕?”我有些...
    開封第一講書人閱讀 157,630評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長刨沦。 經(jīng)常有香客問我诗宣,道長,這世上最難降的妖魔是什么想诅? 我笑而不...
    開封第一講書人閱讀 56,554評(píng)論 1 284
  • 正文 為了忘掉前任召庞,我火速辦了婚禮岛心,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘篮灼。我一直安慰自己忘古,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評(píng)論 6 386
  • 文/花漫 我一把揭開白布诅诱。 她就那樣靜靜地躺著髓堪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪娘荡。 梳的紋絲不亂的頭發(fā)上旦袋,一...
    開封第一講書人閱讀 49,856評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音它改,去河邊找鬼疤孕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛央拖,可吹牛的內(nèi)容都是我干的祭阀。 我是一名探鬼主播,決...
    沈念sama閱讀 39,014評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼鲜戒,長吁一口氣:“原來是場噩夢啊……” “哼专控!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起遏餐,我...
    開封第一講書人閱讀 37,752評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤伦腐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后失都,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柏蘑,經(jīng)...
    沈念sama閱讀 44,212評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評(píng)論 2 327
  • 正文 我和宋清朗相戀三年粹庞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了咳焚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,687評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡庞溜,死狀恐怖革半,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情流码,我是刑警寧澤又官,帶...
    沈念sama閱讀 34,347評(píng)論 4 331
  • 正文 年R本政府宣布,位于F島的核電站漫试,受9級(jí)特大地震影響六敬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜商虐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評(píng)論 3 315
  • 文/蒙蒙 一觉阅、第九天 我趴在偏房一處隱蔽的房頂上張望崖疤。 院中可真熱鬧,春花似錦典勇、人聲如沸劫哼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽权烧。三九已至,卻和暖如春伤溉,著一層夾襖步出監(jiān)牢的瞬間般码,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評(píng)論 1 266
  • 我被黑心中介騙來泰國打工乱顾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留板祝,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,406評(píng)論 2 360
  • 正文 我出身青樓走净,卻偏偏與公主長得像券时,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子伏伯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評(píng)論 2 349