iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 3
0
自我挑戰組

程式設計師大冒險系列 第 3

3/150_第三天練習刷題(Python)

將數字轉成國字的題型,比方說34567,國字就是三萬四千五百六十七。不過這是英文版的轉換,在切數字方面苦惱了一陣子。

Problem ID: 10101 Bangla Numbers

import random
#input
def test():
    ord=1
    sinput=input()
    while (sinput!=""):
        num_1=str(sinput)
        print("%4d."%i,end=" ")
        pr(num_1)
        ord+=1
        sinput=input()

這段是在讀取測資,因為題目有要求有序輸出,所以就在這裡輸出列號

def pr(num):
    snum=[]
    modst={0:"kuti",1:"kuti",2:"kuti",3:"shata",4:"hajar",5:"hajar",6:"lakh",7:"lakh"}
    mo=[1,2,3,1,1,2,1,2]
    st=["kuti","lakh","hajar","shata"]
    moid=[3,2,2,1]
    if(len(num)<7):
        mo[0],mo[1],mo[2]=0,1,2
    most=len(num)%8
    print("{0} {1} ".format(num[:mo[most]],modst[most]),end="")
    num=num[mo[most]:]
    #snum.append(modst[most])
    most=(st.index(modst[most])+1)%4
    while(num!=""):
        if(int(num[:moid[most]])!=0):
            if(len(num)>2):
                print(" {0} {1}".format(int(num[:moid[most]]),st[most]))
            else:
                print(" {0}".format(int(num[:moid[most]])))
            #snum.append(int(num[:moid[most]]))
            #snum.append(st[most])
        num=num[moid[most]:]
        most=(most+1)%4        
test()
    

這邊則是先輸出一次,第一次輸出一定不為零。但是之後不一定,所以用3,2,2,1節奏抓取數字後,判斷不為零再做輸出。


總結

今天練習的題目,但是輸出時候尾數如果為無,會和下一列輸出相連。
如下圖,看來要再熟悉如何輸出
20. 9 shata 37
21. 39 kuti 22. 3 shata 48
23. 7 shata 92
感謝撥冗閱讀,歡迎留言指教。


上一篇
程式設計師大冒險_2/150_第二天順利面試
下一篇
4/150_首次挑戰字串題目(Python)
系列文
程式設計師大冒險115

尚未有邦友留言

立即登入留言