Advertisement
Hoang_Gia_Phu

Câu 5: Viết chương trình đọc 1 số nguyên dương n có kiểu int

Feb 21st, 2020
432
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.30 KB | None | 0 0
  1. '''
  2.    My goal is to read number up to 12 digits only.
  3.    I hope that could satisfy you.
  4.    THANKS FOR READING
  5. '''
  6.  
  7. #FUNC TO GET NUMBERS OF NUM
  8. def getNum(num):      
  9.     while num!=0:
  10.         x = num%10
  11.         getNumArr.insert(0, x)
  12.         num = int(num/10)
  13.        
  14. #READING 1 DIGIT NUMBER
  15. def rd1dgt(getNumArr):
  16.     if len(getNumArr) == 1:
  17.         return numDict[getNumArr[0]]
  18.        
  19. #READING 2 DIGITS NUMBER
  20. def rd2dgt(getNumArr):
  21.     if len(getNumArr) == 2:
  22.         if getNumArr[0] == 1:
  23.            if getNumArr[1] != 0:
  24.                return 'mười', numDict[getNumArr[1]]
  25.            else:
  26.                x = ['mười']
  27.                return x
  28.         else:
  29.            if getNumArr[1] != 0:
  30.                if getNumArr[1] == 1:
  31.                    return numDict[getNumArr[0]], 'mươi mốt'
  32.                else:
  33.                    return numDict[getNumArr[0]], 'mươi', numDict[getNumArr[1]]
  34.            else:
  35.                return numDict[getNumArr[0]], 'mươi'
  36.                
  37. #READING 3 DIGITS
  38. def rd3dgt(getNumArr):
  39.     while True:
  40.         if len(getNumArr) == 1:
  41.            return rd1dgt(getNumArr)
  42.            
  43.         if len(getNumArr) == 2:
  44.            return rd2dgt(getNumArr)    
  45.            
  46.         else:
  47.             #X00000
  48.             if (getNumArr[0] == 0) and (getNumArr[1] == 0) and (getNumArr[2] == 0):
  49.                 return None
  50.                
  51.             #X00000
  52.             if (getNumArr[0] == 0) and (getNumArr[1] == 0) and (getNumArr[2] != 0):
  53.                 return 'lẻ', numDict[getNumArr[2]]
  54.            
  55.             #0X0000
  56.             if (getNumArr[0] == 0) and (getNumArr[1] != 0):
  57.                 prtList = ['lẻ']
  58.                 for i in rd2dgt(getNumArr[1:]):
  59.                     prtList.append(i)
  60.                 return prtList
  61.                
  62.             if (getNumArr[1] == 0) and (getNumArr[2] == 0):
  63.                 return numDict[getNumArr[0]], 'trăm'
  64.             else:
  65.                 prtList = [numDict[getNumArr[0]], 'trăm']
  66.                 if getNumArr[1] == 0:
  67.                     prtList.append('lẻ')
  68.                     prtList.append(numDict[getNumArr[2]])
  69.                     return prtList
  70.                 else:
  71.                     subArr = getNumArr[1:]
  72.                     for i in rd2dgt(subArr):
  73.                         prtList.append(i)
  74.                     return prtList
  75.            
  76.  
  77. #GET NUM
  78. num = int(input())    
  79.  
  80.  
  81. #CREATING ARRAY FOR STORING NUMBERS
  82. getNumArr = []  
  83. numSplit = [[],[],[],[]]  
  84. #CREATING DICT TO READ 1-10
  85. numDict= {
  86.     0: 'mươi',
  87.     1: 'một',
  88.     2: 'hai',
  89.     3: 'ba',
  90.     4: 'bốn',
  91.     5: 'lăm',
  92.     6: 'sáu',
  93.     7: 'bảy',
  94.     8: 'tám',
  95.     9: 'chín'
  96. }  
  97.  
  98.  
  99. getNum(num)
  100.  
  101. while True:
  102.     #HANDLING 1 DIGIT NUMBER
  103.     if num==0:
  104.         print('không')
  105.         break
  106.     if len(getNumArr) == 1:
  107.         print(rd1dgt(getNumArr))
  108.         break
  109.    
  110.     #HANDLING 2 DIGITS NUMBER
  111.     if len(getNumArr) == 2:
  112.         temp = rd2dgt(getNumArr)
  113.         for i in temp:
  114.             print(i, end = ' ')
  115.         break
  116.  
  117.     #HANDLING 3 DIGITS NUMBER
  118.     if len(getNumArr) == 3:
  119.         for i in rd3dgt(getNumArr):
  120.             print(i, end = ' ')
  121.         break
  122.        
  123.     #SPLITTING NUMBER INTO GROUP OF 3
  124.     #6 DIGITS
  125.     if (len(getNumArr) > 3) and (len(getNumArr) <=6):
  126.         div = len(getNumArr)%3
  127.         if div != 0:
  128.             numSplit[2] = getNumArr[:div]
  129.             numSplit[3] = getNumArr[div:]
  130.         else:
  131.             numSplit[2] = getNumArr[:3]
  132.             numSplit[3] = getNumArr[3:]
  133.        
  134.        
  135.         #THOUSAND
  136.         if len(numSplit[2]) == 1:
  137.             print(rd1dgt(numSplit[2]), end = ' ')
  138.         else:
  139.             for i in rd3dgt(numSplit[2]):
  140.                 print(i, end = ' ')
  141.         print('nghìn', end = ' ')
  142.        
  143.         #HUNDRED
  144.         if rd3dgt(numSplit[3]) != None:
  145.             for i in rd3dgt(numSplit[3]):
  146.                 print(i, end = ' ')
  147.    
  148.     #9 DIGITS
  149.     if (len(getNumArr) > 6) and (len(getNumArr) <=9):          
  150.         div = len(getNumArr)%3
  151.         if div != 0:
  152.             numSplit[1] = getNumArr[:div]
  153.             div1 = div + 3
  154.             numSplit[2] = getNumArr[div:div1]
  155.             numSplit[3] = getNumArr[div1:]
  156.         else:
  157.             numSplit[1] = getNumArr[:3]
  158.             numSplit[2] = getNumArr[3:6]
  159.             numSplit[3] = getNumArr[6:]
  160.        
  161.        
  162.         #MILLION
  163.         if len(numSplit[1]) == 1:
  164.             print(rd1dgt(numSplit[1]), end = ' ')
  165.         else:
  166.             for i in rd3dgt(numSplit[1]):
  167.                 print(i, end = ' ')
  168.         print('triệu', end = ' ')
  169.        
  170.         #THOUSAND
  171.         if rd3dgt(numSplit[2]) != None:
  172.             for i in rd3dgt(numSplit[2]):
  173.                 print(i, end = ' ')
  174.             print('nghìn', end = ' ')
  175.        
  176.         #HUNDRED
  177.         if rd3dgt(numSplit[3]) != None:
  178.             for i in rd3dgt(numSplit[3]):
  179.                 print(i, end = ' ')
  180.    
  181.     #12 DIGITS
  182.     if (len(getNumArr) > 9) and (len(getNumArr) <=12):          
  183.         div = len(getNumArr)%3
  184.         if div != 0:
  185.             numSplit[0] = getNumArr[:div]
  186.             div1 = div + 3
  187.             numSplit[1] = getNumArr[div:div1]
  188.             div2 = div1 + 3
  189.             numSplit[2] = getNumArr[div1:div2]
  190.             numSplit[3] = getNumArr[div2:]
  191.         else:
  192.             numSplit[0] = getNumArr[:3]
  193.             numSplit[1] = getNumArr[3:6]
  194.             numSplit[2] = getNumArr[6:9]
  195.             numSplit[3] = getNumArr[9:]
  196.        
  197.        
  198.         #BILLION
  199.         if len(numSplit[0]) == 1:
  200.             print(rd1dgt(numSplit[0]), end = ' ')
  201.         else:
  202.             for i in rd3dgt(numSplit[0]):
  203.                 print(i, end = ' ')
  204.         print('tỷ', end = ' ')
  205.        
  206.         #MILLION
  207.         if rd3dgt(numSplit[1]) != None:
  208.             for i in rd3dgt(numSplit[1]):
  209.                 print(i, end = ' ')
  210.             print('triệu', end = ' ')
  211.        
  212.         #THOUSAND
  213.         if rd3dgt(numSplit[2]) != None:
  214.             for i in rd3dgt(numSplit[2]):
  215.                 print(i, end = ' ')
  216.             print('nghìn', end = ' ')
  217.        
  218.         #HUNDRED
  219.         if rd3dgt(numSplit[3]) != None:
  220.             for i in rd3dgt(numSplit[3]):
  221.                 print(i, end = ' ')
  222.    
  223.     break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement