鱼C论坛

 找回密码
 立即注册
查看: 2975|回复: 8

[已解决]使用函数进行转换的问题

[复制链接]
发表于 2022-7-11 16:17:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
lowchars = "1234567890"
upchars = "一二三四五六七八九零"
num =input("请输入一个数字:" )
def getnum(j):
    index = lowchars.find(j)
    print(index)
    return upchars[index]

res = getnum(num)
print(num,'的大写是',res)

代码能运行,但不是我想要的结果。我希望的是输入任意位数的数字都能转换成对应的大写数字,不考虑百千万等读数。
现在的代码只能转换一位数字,如何才能转换任意位数的数字,,求大佬指教

最佳答案
2022-7-11 19:01:57
  1. num_dict = {
  2.     "1":"一",
  3.     "2":"二",
  4.     "3":"三",
  5.     "4":"四",
  6.     "5":"五",
  7.     "6":"六",
  8.     "7":"七",
  9.     "8":"八",
  10.     "9":"九",
  11.     "0":"零"
  12. }
  13. num =input("请输入数字:")
  14. def getnum(j):
  15.     bigNum = ""
  16.     for i in j:
  17.         bigNum += num_dict[i]
  18.     return bigNum

  19. res = getnum(num)
  20. print(num,'的大写是',res)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-7-11 16:32:05 | 显示全部楼层
  1. lowchars = "1234567890"
  2. upchars = "一二三四五六七八九零"
  3. num =input("请输入一个数字:" )
  4. for x in num:
  5.     if x in lowchars:
  6.         print(upchars[lowchars.index(x)],end="")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-11 19:01:57 | 显示全部楼层    本楼为最佳答案   
  1. num_dict = {
  2.     "1":"一",
  3.     "2":"二",
  4.     "3":"三",
  5.     "4":"四",
  6.     "5":"五",
  7.     "6":"六",
  8.     "7":"七",
  9.     "8":"八",
  10.     "9":"九",
  11.     "0":"零"
  12. }
  13. num =input("请输入数字:")
  14. def getnum(j):
  15.     bigNum = ""
  16.     for i in j:
  17.         bigNum += num_dict[i]
  18.     return bigNum

  19. res = getnum(num)
  20. print(num,'的大写是',res)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-11 19:13:34 | 显示全部楼层

lowchars = "1234567890"
upchars = "一二三四五六七八九零"
num = input("请输入一个数字:")
def getnum():
    for x in num: #遍历输入的数字num
        if x in lowchars:  
            print(upchars[lowchars.index(x)], end="") # 打印x索引对应的大写数字
            return upchars[lowchars.index(x)]
getnum()
为什么放在函数里就不行呢  还是只能读取一位数字。断点执行多位数字只能执行第一位,请指教
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-11 19:31:03 | 显示全部楼层
smyiuo_11 发表于 2022-7-11 19:13
lowchars = "1234567890"
upchars = "一二三四五六七八九零"
num = input("请输入一个数字:")

lowchars = "1234567890"
upchars = "一二三四五六七八九零"
num = input("请输入一个数字:")
for x in num:
    if x in lowchars:
        def getnum():
            return upchars[lowchars.index(x)]
        getnum()
        print(upchars[lowchars.index(x)], end=' ')
终于解决了,函数要放在循环体内,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-11 19:35:37 | 显示全部楼层
smyiuo_11 发表于 2022-7-11 19:31
lowchars = "1234567890"
upchars = "一二三四五六七八九零"
num = input("请输入一个数字:")

你还是不了解函数是咋个用法:给你一个DEMO

  1. def foo(s):
  2.     lowchars = "1234567890"
  3.     upchars = "一二三四五六七八九零"
  4.     r=""
  5.     for x in s:
  6.         if x in lowchars:
  7.             r+= upchars[lowchars.index(x)]
  8.     return r

  9. num = input("请输入一个数字:")
  10. print(foo(num))   
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-11 19:47:36 | 显示全部楼层

把列表换成字典确实方便了许多,
    bigNum = ""
    for i in j:
        bigNum += num_dict[i]
这里理解起来有点难
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-11 19:48:02 | 显示全部楼层
smyiuo_11 发表于 2022-7-11 19:31
lowchars = "1234567890"
upchars = "一二三四五六七八九零"
num = input("请输入一个数字:")

还有一个思路,比这个INDEX要好一些
  1. def foo(s):
  2.     lowchars = "0123456789"
  3.     upchars = "零一二三四五六七八九"
  4.     r=""
  5.     for x in s:
  6.         if x in lowchars:
  7.             r+= upchars[int(x)]
  8.     return r

  9. num = input("请输入一个数字:")
  10. print(foo(num))   
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-11 20:04:11 | 显示全部楼层
smyiuo_11 发表于 2022-7-11 19:47
把列表换成字典确实方便了许多,
    bigNum = ""
    for i in j:

不难理解
j是传进来的数,因为他有好几个数字,所以需要用for循环遍历出每一个数字
在遍历出每一个数字后,就将这个数字放到字典中去查询,把查到的结果先放进bigNum里
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-28 10:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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