題目描述:
銀行在列印票據的時候,常常需要將阿拉伯數字表示的人民幣金額轉換為大寫表示,現在請你來完成這樣乙個程式。
在中文大寫方式中,0到10以及100、1000、10000被依次表示為: 零 壹 貳 叄 肆 伍 陸 柒 捌 玖 拾 佰 仟 萬
以下的例子示範了阿拉伯數字到人民幣大寫的轉換規則:
1 壹圓
11 壹拾壹圓
111 壹佰壹拾壹圓
101 壹佰零壹圓
-1000 負壹仟圓
1234567 壹佰貳拾叄萬肆仟伍佰陸拾柒圓
現在給你乙個整數a(|a|<100000000), 請你列印出人民幣大寫表示.
例如:a=1
則輸出:壹圓
示例:輸入:a = 0
輸出:零圓
這題寫到崩潰,這個**的oj簡直要氣死人,之前用函式提交,顯示a在賦值前已經被引用錯誤(指的是num=a)這步,後面乾脆直接去掉函式
這題大致思路是先把a的值裝進trans中,因為不知道a有多少位,但一定是小於八位數(a的絕對值小於1億),然後加上單位,再去掉最前面所有的0,再去掉中間連續的0,在一些特殊位置在進行細處理
lst1=
['零'
,'壹'
,'貳'
,'叄'
,'肆'
,'伍'
,'陸'
,'柒'
,'捌'
,'玖'
]lst2=
['仟'
,'佰'
,'拾'
,'萬'
,'仟'
,'佰'
,'拾'
,'圓'
]trans=
['零'
,'零'
,'零'
,'零'
,'零'
,'零'
,'零'
,'零'
]num=a
num1=
7#處理負數問題
if num <0:
result =
"負" num =
-num
a = num
else
: a = num
result =
""#將a的值弄進trans裡面並且加上對應的單位
while a!=0:
trans[num1]
=lst1[a%10]
num1-=
1 a=a//
10for i in
range(0
,8):
if trans[i]
!='零'
: trans[i]
=f''
#在特殊位置進行細處理
if trans[3]
=='零'
and num>
10000
:#注意a要大於1萬
trans[3]
='萬'
if trans[7]
=='零'
: trans[7]
='圓'
#去除前面多餘的零
while
'零'in trans[0]
: trans.pop(0)
#去掉連續的0
for key, value in
enumerate
(trans)
:if value[0]
!='零'
: result += value
else
:if value[0]
!= trans[key-1]
[0]:
result +=
'零'#注意零萬和零圓的情況,例如壹佰零萬圓,壹仟零圓這種型別的情況
result=result.replace(
'零萬'
,'萬'
)result=result.replace(
'零圓'
,'圓'
)#a=0時單列
if num ==0:
result =
"零圓"
print
(result)
python自學做題記錄之凱撒密碼
問題描述 凱撒密碼是古羅 撒大帝用來保護重要軍情的加密系統。這套密碼系統在現在看來很低階,但是在古羅馬時期還是發揮了重要作用的。凱撒密碼的根本思想是按照字母表排列順序將明文中每個字母變換成其後第n個字母。這裡,n n 1 25 被稱作秘鑰。請編寫程式,針對不同的輸入字串和移動位數,輸出經過凱撒加密之...
python自學做題記錄之序列判斷
題目描述 給你乙個整數組成的列表l,按照下列條件輸出 若l是公升序排列的,則輸出 up 若l是降序排列的,則輸出 down 若l無序,則輸出 wrong 示例 輸入 l 1,1,3,3,4 輸出 up 可以用死辦法做 f 0for i in range len l 1 if l i l i 1 遞減...
python自學做題記錄之py數
題目描述 py從小喜歡奇特的東西,而且天生對數字特別敏感,一次偶然的機會,他發現了乙個有趣的四位數2992,這個數,它的十進位制數表示,其四位數字之和為2 9 9 2 22,它的十六進製制數bb0,其四位數字之和也為22,同時它的十二進位制數表示1894,其四位數字之和也為22,啊哈,真是巧啊。py...