標籤:mac python 學習 編程 語言
11.給你一個正整數列表 L, 如 L=[2,8,3,50], 輸出L內所有數位乘積末尾0的個數,
如範例L的結果為2.(提示:不要直接相乘,數字很多,可能溢出)
Answer:n_2 = 0n_5 = 0for tmp in L: while tmp % 2 == 0: n_2 += 1 tmp /= 2 while tmp % 5 == 0: n_5 += 1 tmp /= 5print min(n_2,n_5)
12.給你一個正整數列表 L, 如 L=[2,8,3,50], 判斷列表內所有數字乘積的最後一個非零數位奇偶性,
奇數輸出1,偶數輸出0. 如範例輸出應為0
Answer:result = reduce(lambda a,b:a*b, L)no_zero = int(str(result).replace(‘0‘, ‘‘))print(no_zero & 1)
13.光棍們對1總是那麼敏感,因此每年的11.11被戲稱為光棍節。
鄙人光棍幾十載,光棍自有光棍的快樂。讓我們勇敢面對光棍的身份吧,
現在就證明自己:給你一個整數a,數出a在二進位表示下1的個數,並輸出。
a % 2 == 1Answer:print bin(a).count(“1")
14.輸出Python之禪
注意:輸出python之禪的源碼即可,不用轉換為英文。(小小的提示:print this.s)
Answer:import thisprint this.s
15.給定一個字串a, 將a中的大寫字母 轉換成小寫,其它字元不變,並輸出。
Answer:print a.lower()
16.銀行在列印票據的時候,常常需要將阿拉伯數字表示的人民幣金額轉換為大寫表示,現在請你來完成這樣一個程式。
在中文大寫方式中,0到10以及100、1000、10000被依次表示為:
零壹貳三肆伍陸柒捌玖拾佰仟萬
以下的例子示範了阿拉伯數字到人民幣大寫的轉換規則:
1 壹圓
11 壹拾壹圓
111 壹佰壹拾壹圓
101 壹佰零壹圓
-1000 負壹仟圓
1234567 壹佰貳拾三萬肆仟伍佰陸拾柒圓
現在給你一個整數a(|a|<100000000), 列印出人民幣大寫表示.
注意:由於中文亂碼問題,輸出時請先decode(“utf8”),例如你要輸出ans = “零圓”, print ans.decode(“utf8”).
Answer:m=[‘零‘,‘壹‘,‘貳‘,‘三‘,‘肆‘,‘伍‘,‘陸‘,‘柒‘,‘捌‘,‘玖‘]n=[‘‘,‘拾‘,‘佰‘,‘仟‘,‘圓‘,‘萬‘]b=str(abs(a))l=len(b)if a<0: c=‘負‘else: c=‘‘def num(ln): c=‘‘ l=len(ln) i=0 if l==1 and ln[0]==‘0‘: c+=m[0] return c if l==4 and ln==‘0000‘: c+=m[0] return c while i<l: while i<l and int(ln[i])==0: i+=1 if i<l and int(ln[i])!=0: c+=m[0] break if i==l: break c+=m[int(ln[i])] c+=n[l-i-1] i+=1 return cif l<=4: c=c+num(b)+n[4]else: c=c+num(b[:l-4])+n[5]+num(b[l-4:])+n[4]print c.decode("utf8")
17 . 給你兩個正整數a,b, 輸出它們公約數的個數。
Answer:print len(set([i for i in range(2,max(a,b)) if (a%i == 0 and b%i==0)])) + 1
18 . 我們經常遇到的問題是給你兩個數,要你求最大公約數和最小公倍數。
今天我們反其道而行之,給你兩個數a和b,計算出它們分別是哪兩個數的最大公約數和最小公倍數。
輸出這兩個數,小的在前,大的在後,以空格隔開。若有多組解,輸出它們之和最小的那組。
註:所給資料都有解,不用考慮無解的情況。
Answer:
c=b/al=[]for i in range(c): if c%(i+1)==0: l.append(i+1)print str(l[len(l)/2-1]*a)+" "+str(l[len(l)/2]*a)
19 . 抓不住愛情的我
總是眼睜睜看它溜走
…
現在來練習一下發現愛的能力,給你一個字串a,如果其中包含”LOVE”(love不區分大小寫)則輸出LOVE,否則輸出SINGLE。
Answer:print ‘LOVE‘ if ‘love‘ in a.lower() else ‘SINGLE‘
20 . 給你個小寫英文字串a和一個非負數b(0<=b<26), 將a中的每個小寫字元替換成字母表中比它大b的字母。
這裡將字母表的z和a相連,如果超過了z就回到了a。例如a=”cagy”,b=3, 則輸出 fdjb
Answer:s=‘‘for i in a:if ord(i)>=97 and ord(i)<=122:i=chr(97+(ord(i)+b-97)%26)s+=iprint s
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Mac 學習系列之Python Challenge 11-20