Python挑戰(zhàn)100題(11~13)

11彤恶、人民幣打印金額

題目:銀行在打印票據(jù)的時(shí)候,常常需要將阿拉伯?dāng)?shù)字表示的人民幣金額轉(zhuǎn)換為大寫(xiě)表示坦辟,現(xiàn)在請(qǐng)你來(lái)完成這樣一個(gè)程序刊侯。

在中文大寫(xiě)方式中,0到10以及100锉走、1000滨彻、10000被依次表示為: 零 壹 貳 叁 肆 伍 陸 柒 捌 玖 拾 佰 仟 萬(wàn)

以下的例子示范了阿拉伯?dāng)?shù)字到人民幣大寫(xiě)的轉(zhuǎn)換規(guī)則:
1 壹圓
11 壹拾壹圓
111 壹佰壹拾壹圓
101 壹佰零壹圓
-1000 負(fù)壹仟圓
1234567 壹佰貳拾叁萬(wàn)肆仟伍佰陸拾柒圓

現(xiàn)在給你一個(gè)整數(shù)a(|a|<100000000), 請(qǐng)你打印出人民幣大寫(xiě)表示.
例如:a=1
則輸出:壹圓
注意:請(qǐng)以Unicode的形式輸出答案藕届。提示:所有的中文字符,在代碼中直接使用其Unicode的形式即可滿足要求疮绷,中文的Unicode編碼可以通過(guò)如下方式獲得:u'壹'翰舌。
參考答案:

# 用字典來(lái)建立數(shù)字和漢字的對(duì)應(yīng)關(guān)系
d = {'0':'零','1':'壹','2':'貳','3':'叁','4':'肆','5':'伍',
     '6':'陸','7':'柒','8':'捌','9':'玖'}
unit = {'1':'','2':'拾','3':'佰','4':'仟','5':'萬(wàn)'}

# 接受列表參數(shù),返回轉(zhuǎn)換后的中文大寫(xiě)金額字符串
def f(L):
    s = []
    n = 1
    for i in L[::-1]:  # 從后往前冬骚,逐個(gè)從字典中對(duì)應(yīng)成漢字
        if i == '0':
            s.append(d[i])
            n = n + 1
        else:
            s.append(unit[str(n)])
            s.append(d[i])
            n = n + 1

    s.reverse()
    for i in s[::-1]: # 處理一下結(jié)尾多個(gè)零的問(wèn)題
        if i == '零':
            del s[-1]
        else:
            break

    while s.count('零') > 1:  # 處理一下中間有多個(gè)零的問(wèn)題
        s.remove('零')
    return s

# 接受一個(gè)數(shù)字椅贱,調(diào)用上面的函數(shù),返回中文大寫(xiě)金額
def rmb(x):
    if x > 0:
        L = list(str(x))
        if len(L) <= 4:
            l = f(L)
            l.append('圓')
            l = ''.join(l)
            return l
        else:
            La = L[-4:]   # 倒數(shù)第4至結(jié)束
            Lb = L[:len(L) - 4]
            La = f(La)
            Lb = f(Lb)
            La.append('圓')
            Lb.append('萬(wàn)')
            Lab = Lb + La
            return ''.join(Lab)
    elif x == 0:
        return '零圓'
    else:
        Lc = list(rmb(abs(x)))
        Lc.insert(0,'負(fù)')  # 在最前面加上‘負(fù)’
        rerurn ''.join(Lc)

b = rmb(1398462)
print(b)

輸出

壹佰叁拾玖萬(wàn)捌仟肆佰陸拾貳圓

12只冻、公約數(shù)個(gè)數(shù)

題目:給你兩個(gè)正整數(shù)a,b, 輸出它們公約數(shù)的個(gè)數(shù)庇麦。
例如:a = 24, b = 36
則輸出:6
參考答案:

a,b = 24,36
n = 0
for i in range(1,max(a,b)):
    if a % i == 0 and b % i == 0:
        n = n + 1
    else:
        n = n
print(n)

一行搞定:

a,b = 24,36
print(sum([1 if a % i == 0 and b % i == 0 else 0 for i in range(1, max(a,b))]))

13喜德、逆解最大公約數(shù)與最小公倍數(shù)

題目:我們經(jīng)常遇到的問(wèn)題是給你兩個(gè)數(shù)山橄,要你求最大公約數(shù)和最小公倍數(shù)。今天我們反其道而行之舍悯,給你兩個(gè)數(shù)a和b航棱,計(jì)算出它們分別是哪兩個(gè)數(shù)的最大公約數(shù)和最小公倍數(shù)。輸出這兩個(gè)數(shù)萌衬,小的在前饮醇,大的在后,以空格隔開(kāi)秕豫。若有多組解朴艰,輸出它們之和最小的那組。注:所給數(shù)據(jù)都有解混移,不用考慮無(wú)解的情況祠墅。

例如:a=3, b = 60
則輸出:12 15
參考答案:
來(lái)源于:https://blog.csdn.net/weixin_41980474/article/details/80230881
首先可以知道,這兩個(gè)數(shù)的取值范圍在[3,60]之間歌径。

import math
a,b = 3,60
c = min(a,b) # 最大公約數(shù)
d = max(a,b) # 最小公倍數(shù)
l = []  # 增加一個(gè)列表用于存放所有滿足條件的數(shù)組
for i in range(c,d+1):
    for j in range(c,d+1):
        if math.gcd(i,j) == c and i * j / c == d: # 遍歷所有在[3,60]內(nèi)組成的數(shù)組
            l.append((i,j))  # 如果滿足條件毁嗦,將兩數(shù)打包為tuple添加l列表

l.sort(key = lambda x: x[0] + x[1])  # 使用兩數(shù)之和作為key對(duì)l中的元素進(jìn)行排序,默認(rèn)為升序回铛,因此排序后第一組數(shù)據(jù)為所求的
print(' '.join(map(str,l[0])))

輸出:

12 15
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末金矛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子勺届,更是在濱河造成了極大的恐慌,老刑警劉巖娶耍,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件免姿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡榕酒,警方通過(guò)查閱死者的電腦和手機(jī)胚膊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)故俐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人紊婉,你說(shuō)我怎么就攤上這事药版。” “怎么了喻犁?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵槽片,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我肢础,道長(zhǎng)还栓,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任传轰,我火速辦了婚禮剩盒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘慨蛙。我一直安慰自己辽聊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布期贫。 她就那樣靜靜地躺著跟匆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪唯灵。 梳的紋絲不亂的頭發(fā)上贾铝,一...
    開(kāi)封第一講書(shū)人閱讀 49,071評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音埠帕,去河邊找鬼垢揩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛敛瓷,可吹牛的內(nèi)容都是我干的叁巨。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼呐籽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼锋勺!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起狡蝶,我...
    開(kāi)封第一講書(shū)人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤庶橱,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后贪惹,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體苏章,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了枫绅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泉孩。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖并淋,靈堂內(nèi)的尸體忽然破棺而出寓搬,到底是詐尸還是另有隱情,我是刑警寧澤县耽,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布句喷,位于F島的核電站,受9級(jí)特大地震影響酬诀,放射性物質(zhì)發(fā)生泄漏脏嚷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一瞒御、第九天 我趴在偏房一處隱蔽的房頂上張望父叙。 院中可真熱鬧,春花似錦肴裙、人聲如沸趾唱。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)甜癞。三九已至,卻和暖如春宛乃,著一層夾襖步出監(jiān)牢的瞬間悠咱,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工征炼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留析既,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓谆奥,卻偏偏與公主長(zhǎng)得像眼坏,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子酸些,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345