鱼C论坛

 找回密码
 立即注册
楼主: 冬雪雪冬

[技术交流] Python:每日一题 165

[复制链接]
发表于 2018-3-17 12:22:15 | 显示全部楼层
dictnum = {0:'',1:"一",2:"二",3:"三",4:"四",5:"五",6:"六",7:"七",8:"八",9:"九",10:"十"}
for i in range(1,10):
    for j in range(1,i+1):
        if i*j<10:
            print(dictnum[j]+dictnum[i]+'得'+dictnum[i*j],end = ' ')
        else:
            print(dictnum[j]+dictnum[i]+dictnum[(i*j)//10]+dictnum[10]+dictnum[(i*j)%10],end = ' ')
    print("\n")

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-17 12:34:24 | 显示全部楼层
  1. '''
  2. 打印中文九九乘法表
  3. 要求使用循环语句或等同于循环的方法。
  4. '''
  5. dictcf={0:'',1:'一',2:'二',3:'三',4:'四',5:'五',6:'六',7:'七',8:'八',9:'九'}
  6. for i in range(1,10):#行标
  7.     for j in range(1,i+1):#列标
  8.         if i*j>9:
  9.             strjg=dictcf[i*j//10]+'十'+dictcf[i*j%10]
  10.             strx=' '
  11.             if i*j%10==0:
  12.                 strx='  '
  13.         else:
  14.             strjg='得'+dictcf[i*j]
  15.             strx='  '
  16.         print(dictcf[j]+dictcf[i]+strjg,end=strx)
  17.     print()
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-17 12:53:13 | 显示全部楼层
  1. lst = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']
  2. for i in range(1, 10):
  3.     for j in range(1, i + 1):
  4.         n = i * j
  5.         if n < 10:
  6.             print('{}{}得{:<2}'.format(lst[j], lst[i], lst[n]), end = ' ')
  7.         elif n % 10 != 0:
  8.             print('{}{}{}十{}'.format(lst[j], lst[i], lst[n//10], lst[n%10]), end = ' ')
  9.         else:
  10.             print('{}{}{}十  '.format(lst[j], lst[i], lst[n//10]), end = ' ')
  11.     print('\n')   
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-17 13:06:27 | 显示全部楼层
本帖最后由 °蓝鲤歌蓝 于 2018-3-17 13:08 编辑
  1. List = ['','一', '二', '三', '四', '五', '六', '七', '八', '九', '十']
  2. a = {x:y for x, y in enumerate(List)}

  3. for i in range(1, 10):
  4.     for j in range(1, i+1):
  5.         if i*j <= 10:
  6.             b = '{}{}得{}'.format(a[j], a[i], a[i*j])
  7.             print(b, end=' '*(8-len(b)))

  8.         else:
  9.             c = '{}{}{}'.format(a[j], a[i], a[int(i*j//10)]+'十'+a[int(i*j%10)])
  10.             result = a[int(i*j//10)]+'十'+a[int(i*j%10)]
  11.             print(c, end=' '*(7-len(c)))
  12.     print()
复制代码
  1. 一一得一   
  2. 一二得二    二二得四   
  3. 一三得三    二三得六    三三得九   
  4. 一四得四    二四得八    三四一十二  四四一十六  
  5. 一五得五    二五得十    三五一十五  四五二十   五五二十五  
  6. 一六得六    二六一十二  三六一十八  四六二十四  五六三十   六六三十六  
  7. 一七得七    二七一十四  三七二十一  四七二十八  五七三十五  六七四十二  七七四十九  
  8. 一八得八    二八一十六  三八二十四  四八三十二  五八四十   六八四十八  七八五十六  八八六十四  
  9. 一九得九    二九一十八  三九二十七  四九三十六  五九四十五  六九五十四  七九六十三  八九七十二  九九八十一  
复制代码

中文 对不齐,很怪。

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-17 18:12:50 | 显示全部楼层
  1. # ! /urs/bin/env python
  2. # coding=utf-8
  3. # __author__ = 'bang'  CreateDate:2018/3/17

  4. chinese = {1: '一',
  5.            2: '二',
  6.            3: '三',
  7.            4: '四',
  8.            5: '五',
  9.            6: '六',
  10.            7: '七',
  11.            8: '八',
  12.            9: '九'
  13.            }
  14. # print by number

  15. # for i in range(1, 10):
  16. #     for j in range(1, i + 1):
  17. #         cal = i * j
  18. #         print j, '*', i, '=', '%-3d' % cal,
  19. #     print

  20. # print by chinese
  21. for i in range(1, 10):
  22.     for j in range(1, i + 1):
  23.         cal = i * j
  24.         if cal < 10:
  25.             print '%-8s' % (chinese[j] + chinese[i] + '得' + chinese[cal]),
  26.         elif cal % 10 == 0:
  27.             print '%-8s' % (chinese[j] + chinese[i]  + chinese[cal / 10] + '十'),
  28.         else:
  29.             print '%-10s' % (chinese[j] + chinese[i] + chinese[cal / 10] + '十' + chinese[cal % 10]),
  30.     print
复制代码


输出得格式,搞了占位符,也搞不定。新人求版主指教。

点评

可以用\t对齐  发表于 2018-3-18 21:26

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-17 20:49:24 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-17 21:10:59 | 显示全部楼层
本帖最后由 Chase_Kas 于 2018-3-17 21:22 编辑

确实比想象的要简单些,两个循环嵌套就行了
  1. def fun():
  2.     num = ' 一二三四五六七八九'
  3.     for i in range(1, 10):
  4.         for j in range(1, i + 1):
  5.             if i*j < 10:
  6.                 print((num[j] + num[i] + '得' + num[i*j] + ' ').ljust(7), end = '')
  7.             else:
  8.                 print((num[j] + num[i] + num[i*j//10] + '十' + num[i*j%10]).ljust(7), end = '')
  9.         print()

  10. fun()
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-17 21:11:59 | 显示全部楼层
多回一贴领奖励嘿嘿嘿

评分

参与人数 1荣誉 +10 鱼币 +10 收起 理由
冬雪雪冬 + 10 + 10

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-17 21:13:51 | 显示全部楼层
本帖最后由 luokaoge 于 2018-3-17 21:15 编辑

又晚啦,手机打还是不太方便呀
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[x]
            e = d[int(y[0])]
            f = ''
            if len(y)==2:
                if int(y[1])==0:
                     f = d[0] + '  '
                else:
                     f = d[0] + d[int(y[1])]
                c = a + '乘' + b + '得' + e + f
            else:
                c = a + '乘' + b + '得' + e + '    '
            s.append(c)
    print(" ".join(s))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-17 21:14:25 | 显示全部楼层
本帖最后由 luokaoge 于 2018-3-17 21:30 编辑

这样还是格式好看些
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[x]
            e = d[int(y[0])]
            f = ''
            if len(y)==2:
                if int(y[1])==0:
                     f = d[0] + '  '
                else:
                     f = d[0] + d[int(y[1])]
                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))

点评

TypeError: can only concatenate list (not "str") to list  发表于 2018-3-18 20:53
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-17 21:34:51 | 显示全部楼层
  1. def mul(n):
  2.     nums = "一二三四五六七八九十"
  3.     for i in range(n):
  4.         result = n * (i + 1)
  5.         if result < 10:
  6.             print("{}{}得{}".format(nums[i], nums[n-1], nums[result-1]), end=' ')
  7.         else:
  8.             tens, ones = divmod(result, 10)
  9.             if not ones:
  10.                 print("{}{}{}十".format(nums[i], nums[n-1], nums[tens-1]), end=' ')
  11.             else:
  12.                 print("{}{}{}十{}".format(nums[i], nums[n-1], nums[tens-1], nums[ones-1]), end=' ')

  13. for i in range(1, 10):
  14.     mul(i)
  15.     print('\n')
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-17 22:01:33 | 显示全部楼层
  1. def trans(n):
  2.     res = ''
  3.     if n // 10:
  4.         res += list[n // 10 - 1] + list[9]
  5.     res += list[n % 10 - 1]
  6.     return res
  7.         
  8. list = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十']
  9. for i in range(1, 10):
  10.     for j in range(1, i + 1):
  11.         print(list[j - 1], end = '')
  12.         print(list[i - 1], end = '')
  13.         if len(trans(i * j)) == 1:
  14.             print('得', end = '')
  15.         print(trans(i * j), end = '\t')
  16.     print()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-17 23:51:13 | 显示全部楼层
  1. def get_new_str(i, item):
  2.     '''组合得到新的字符串'''
  3.     s = ['一',"二","三","四","五","六","七","八","九"]
  4.     #观察可得到,分两种情况:1.当两个数相乘小于10,会有得这个字
  5.     #2.当两个数相乘大于10的时候,又分为两种情况:结果是三个字和两个字
  6.     #如二五一十 (能被十整除),结果一十是两个字,三五一十五(不能被十整除),结果是三个字
  7.     if i * item < 10:
  8.         return s[item-1]+s[i-1]+"得"+s[i*item-1]
  9.     else:
  10.         if i*item%10 == 0:
  11.             return s[item-1]+s[i-1]+s[i*item//10-1]+"十"
  12.         else:
  13.             return s[item-1]+s[i-1]+s[i*item//10-1]+"十"+s[i*item%10-1]

  14. def main():

  15.     for i in range(1,10):
  16.         for item in range(1,i + 1):
  17.             new_str = get_new_str(i,item)
  18.             print new_str+'\t',
  19.         print("")


  20. if __name__ == "__main__":
  21.     main()
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-18 01:04:56 | 显示全部楼层
def cn(n):
    list_cn = ['一','二','三','四','五','六','七','八','九','十']
    if n <= 9:
        return '得' + list_cn[n - 1]
    elif n % 10 == 0:
        return list_cn[n // 10 - 1] + list_cn[9]
    else:
        return list_cn[n // 10 - 1] + list_cn[9] + list_cn[n % 10 - 1]

list_cn = ['一','二','三','四','五','六','七','八','九','十']
list_pt = []
str2 = ''
for i in range(9):
    for j in range(i + 1):
        num = (i + 1) * (j + 1)
        str1 = list_cn[j] + list_cn[i] + cn(num)
        while(len(str1) < 7):
            str1 += '  '
        str2 += str1
    print(str2)
    str2 = ''
    list_pt = []

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-18 07:47:19 From FishC Mobile | 显示全部楼层
qqq
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-18 08:18:11 | 显示全部楼层
zhedaan
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-18 10:48:00 | 显示全部楼层
dict1 = {0:'十',1:'一',2:'二',3:'三',4:'四',5:'五',6:'六',7:'七',8:'八',9:'九',}
def fun(a,b):
    result = a*b
    #求十位数
    k = result//10%10
    #求个位数
    l = result%10
    if(k<=0):
        return dict1[l]
    elif(l!=0):
        return dict1[k]+dict1[0]+dict1[l]
    else:
        return dict1[k]+dict1[0]
m=1
while m<=9:
    for i in range(1,m+1):
        print('%2s%2s得%2s'%(dict1[i],dict1[m],fun(i,m)),end='\t')
    print()
    m+=1

点评

不需要都有“得”  发表于 2018-3-18 20:55

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-18 14:42:02 | 显示全部楼层
um = ("一","二","三",\
    "四","五","六"

    ,"七",\
    "八","九","十")
for i in range(0,9):
    for j in range(0,i+1):
        mul = (i +1)*(j+1)
# print(mul)
        if mul <= 10:
            mul2str = "得"+num[mul-1]+" "
            if i >0:
                mul2str += ""
# print(mul2str)
        else:
            mul2str = num[mul//10-1]+\
            num[-1]+num[mul%10-1]+" "
# print(mul2str)
        toprit = num[i]+num[j]+mul2str
        print(toprit,end = " ")
    print()

点评

二四得八,不是四二得八  发表于 2018-3-18 20:57

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-18 20:30:03 | 显示全部楼层
评分截至标记。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-18 21:18:02 | 显示全部楼层
大家都写的很简洁呀,向你们学习。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 18:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表