t6am3 发表于 2018-3-18 23:23:41

def trans(a):
    tmp = ''
    tuple1 = ('十','一','二','三','四','五','六','七','八','九')
    for i in a:
      tmp += tuple1
    return tmp
for i in range(9):
    for j in range(i+1):
      tmp = str((i+1)*(j+1))
      if len(tmp) == 2 and tmp != '0':
            tmp = tmp+'0'+tmp
      print(trans(str(j+1))+trans(str(i+1))+'得'+trans(tmp)+ '\t',end='')
    print('')
   

大头目 发表于 2018-3-19 09:20:08

def transform(number):
      str1 = '零一二三四五六七八九十'
      if number < 10:
                return str1
      elif number % 10 == 0:
                return str1 + str1
      else:
                return str1 + str1 + str1

def tables():
      for i in range(1,10):
                for j in range(1,i+1):
                        if i * j < 10:
                              print('%s%s得%s' % (transform(j),transform(i),transform(i*j)),end = '\t')
                        else:
                              print('%s%s%s'%(transform(j),transform(i),transform(i*j)),end = '\t')
                print('')

if __name__ == '__main__':
      tables()

luokaoge 发表于 2018-3-19 09:36:03

本帖最后由 luokaoge 于 2018-3-19 09:37 编辑

~

Chase_Kas 发表于 2018-3-19 10:04:32

°蓝鲤歌蓝 发表于 2018-3-17 13:06
中文 对不齐,很怪。

中文字符的宽度是英文字符两倍,所以对齐很难,如果用全角的空格(和中文一样占两个宽度)就很容易对齐了

CH10 发表于 2018-3-19 11:46:17

本帖最后由 CH10 于 2018-3-19 12:05 编辑

num = (' ', '一', '二', '三', '四', '五', '六', '七', '八', '九')
def strResult(n,num = ()):
    result = for x in str(n)] ##利用列表生成器
    temp = ''
    if(len(result)<2):
      temp = '得'
    for i in range(len(result)):
      if(i>0):
            temp=temp+'十'
      temp+=result
      if(len(result) < 2):
            temp += ' '
    return temp
for x in range(1, 10):
    for y in range(1, x+1):
      print('%s%s%s'%(num, num, strResult(x*y, num)),end = '\t'+(x==y)*'\n')
一一得一        
一二得二         二二得四        
一三得三         二三得六         三三得九        
一四得四         二四得八         三四一十二        四四一十六       
一五得五         二五一十         三五一十五        四五二十         五五二十五       
一六得六         二六一十二        三六一十八        四六二十四        五六三十         六六三十六       
一七得七         二七一十四        三七二十一        四七二十八        五七三十五        六七四十二        七七四十九       
一八得八         二八一十六        三八二十四        四八三十二        五八四十         六八四十八        七八五十六        八八六十四       
一九得九         二九一十八        三九二十七        四九三十六        五九四十五        六九五十四        七九六十三        八九七十二        九九八十一

graceasyi 发表于 2018-3-19 11:53:26

本帖最后由 graceasyi 于 2018-3-19 13:06 编辑

来晚了~

def ch(d):
    cc = ['十', '一', '二', '三', '四', '五', '六', '七', '八', '九']
    if len(str(d)) == 1:
      return cc
    elif len(str(d)) == 2:
      return cc + '十' + cc if d%10 else cc + cc


for i in range(1, 10):
    for j in range(1, i+1):
      if len(str(i*j)) == 1:
            print('%s%s得%s' % (ch(j), ch(i), ch(i*j)), end='\t')
      else:
            print('%s%s%s' % (ch(j), ch(i), ch(i*j)), end='\t')
    print("\n")

结果:

luokaoge 发表于 2018-3-19 18:49:24

luokaoge 发表于 2018-3-17 21:14
这样还是格式好看些
for i in range(1,10):
    x=i


会报错么,我运行可以呀,就是都有得。。。

luokaoge 发表于 2018-3-19 18:55:28

luokaoge 发表于 2018-3-19 18:49
会报错么,我运行可以呀,就是都有得。。。

for i in range(1,10):
    x=i
    s = []
    c = ''
    d = ['十','一','二','三','四','五','六','七','八','九']
    for i in range(1,x+1):
            y=str(i*x)
            a = d
            b = d
            e = d)]
            f = ''
            if len(y)==2:
                if int(y)==0:
                     f = d + ''
                else:
                     f = d + d)]
                c = a + b+ e + f
            else:
                f = ''
                if i == 1:
                  c =a + b + '得' + e
                else:
                  c =a + b + '得' + e + f
            s.append(c)
    print(" ".join(s))
打印结果:
====================== RESTART: F:\klay_python\乘法口诀.py ======================
一一得一
一二得二 二二得四
一三得三 二三得六   三三得九
一四得四 二四得八   三四一十二 四四一十六
一五得五 二五一十   三五一十五 四五二十   五五二十五
一六得六 二六一十二 三六一十八 四六二十四 五六三十   六六三十六
一七得七 二七一十四 三七二十一 四七二十八 五七三十五 六七四十二 七七四十九
一八得八 二八一十六 三八二十四 四八三十二 五八四十   六八四十八 七八五十六 八八六十四
一九得九 二九一十八 三九二十七 四九三十六 五九四十五 六九五十四 七九六十三 八九七十二 九九八十一

luokaoge 发表于 2018-3-19 18:56:49

luokaoge 发表于 2018-3-19 18:55
for i in range(1,10):
    x=i
    s = []


{:9_231:}

_小菜鸟 发表于 2018-3-19 20:58:06

li = ["","一","二","三","四","五","六","七","八","九"]
for num in range(1,10):
    i = 1
    while(i<=num):
      k = str(i * num)
      if len(k)>1:
            if i < num:
                print("%s%s%s" %(li,li,li)] + "十" + li)]),end ="")
            else:
                print("%s%s%s" %(li,li,li)] + "十" + li)]))
      else:
            if i < num:
                print("%s%s得%s" %(li,li,li)]),end ="")
            else:
                print("%s%s得%s" %(li,li,li)]))
      i +=1

Lis 发表于 2018-3-19 21:43:33

本帖最后由 Lis 于 2018-3-19 21:46 编辑

Lis 发表于 2018-3-17 22:01


@冬雪雪冬 那啥。。不管好坏好歹点评下吧。{:10_266:}32楼

小白龙32 发表于 2018-3-19 23:50:44

dict1 = {}

list1 = ['','一','二','三','四','五','六','七','八','九']

for j in range(10,82):
    str1 = str(j)
    list1.append(list1)]+'十'+list1)])

for i in range(82):
    dict1 = list1

i = 1
j = 1
for i in range(1,10):
    for j in range(1,i+1):
      if i*j<10:
            print("%s%s得%s"%(dict1,dict1,dict1),end='')
      else:
            print("%s%s%s"%(dict1,dict1,dict1),end='')
    print('')

BlueSand 发表于 2018-3-21 19:46:49

# encoding: utf-8
"""
乘法口诀中文版:一一得一
"""
a = []
a.extend("一二三四五六七八九零")
for i in range(1, 10):
    for j in range(1, i+1):
      k = (i * j)//10
      m = (i * j) % 10
      if k == 0:
            print(a + a + "得" + a, end="")
      elif m == 0:
            print(a + a + a+"十", end="")
      else:
            print(a + a + a + "十" + a, end="")
      print("\t", end="")
    print("")

BlueSand 发表于 2018-3-21 19:52:18

# encoding: utf-8
"""
乘法口诀中文版:一一得一
"""
a = []
a.extend("一二三四五六七八九零")
for i in range(1, 10):
    for j in range(1, i+1):
      k = (i * j)//10
      m = (i * j) % 10
      if k == 0:
            print(a + a + "得" + a, end="")
      elif m == 0:
            print(a + a + a+"十", end="")
      else:
            print(a + a + a + "十" + a, end="")
      print("\t", end="")
    print("")

Wangzy1025 发表于 2018-5-11 11:07:24

dict1 = dict(zip(range(10),['', '一', '二', '三', '四', '五', '六',
                              '七', '八', '九']))

def switch(s):
    if len(s) == 3:
      return dict1)]+dict1)]+'得'+dict1)]
    else:
      return dict1)]+dict1)]+dict1)]+'十'+dict1)]


for i in range(1, 10):
    for j in range(1, i+1):
      s = '%d%d%d' % (j, i, j*i)
      print('%5s' % switch(s), end='')
    print()

新手潘包邮 发表于 2018-5-11 23:43:30

def fun():
    for i in range(1, 10):
      for j in range(1, i+1):
            print("%s×%s=%s"%(j, i, i*j), end = " ")
      print()            
    pass
def fun():
    dict_num = {0:"",1:"一", 2:"二",3:"三",4:"四",5:"五",6:"六",7:"七",8:"八",9:"九",10:"十"}
    for i in range(1, 10):
      for j in range(1, i+1):
            k = i*j
            if k < 10:
                print("%s%s得%s"%(dict_num, dict_num, dict_num), end = " ")
            else:
                a = k//10
                b = 10
                c = k%10
                print("%s%s%s%s%s"%(dict_num, dict_num, dict_num,dict_num,dict_num), end = " ")
      print()
    pass

foxiangzun 发表于 2019-1-25 19:10:32

def countFormChinese():
      countDict = {
                0: '', 1: '一', 2: '二', 3: '三', 4: '四',
                5: '五', 6: '六', 7: '七', 8: '八', 9: '九'
      }
      for i in range(1, 10):
                for j in range(1, i + 1):
                        if i * j < 10:
                              print('%s%s得%s' % (countDict, countDict, countDict), end='')
                        else:
                              print('%s%s%s十%s' % (countDict, countDict, countDict)],
                                                   countDict)]), end='')
                print()

countFormChinese()

kinkon 发表于 2022-9-7 17:17:14

w = ' 一二三四五六七八九'
for i in range(1, 10):
    for j in range(1, i + 1):
      p = i * j
      if p < 10:
            print('{1}{0}得{2}'.format(w, w, w),end='\t')
      else:
            d, v = divmod(i*j, 10)
            print('{1}{0}{2}十{3}'.format(w, w, w,w),end='\t')
    print(end='\n')
页: 1 2 [3]
查看完整版本: Python:每日一题 165