鱼C论坛

 找回密码
 立即注册
查看: 2607|回复: 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
num_dict = {
    "1":"一",
    "2":"二",
    "3":"三",
    "4":"四",
    "5":"五",
    "6":"六",
    "7":"七",
    "8":"八",
    "9":"九",
    "0":"零"
}
num =input("请输入数字:")
def getnum(j):
    bigNum = ""
    for i in j:
        bigNum += num_dict[i]
    return bigNum

res = getnum(num)
print(num,'的大写是',res)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-11 16:32:05 | 显示全部楼层
lowchars = "1234567890"
upchars = "一二三四五六七八九零"
num =input("请输入一个数字:" )
for x in num:
    if x in lowchars:
        print(upchars[lowchars.index(x)],end="")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

res = getnum(num)
print(num,'的大写是',res)
想知道小甲鱼最近在做啥?请访问 -> 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()
为什么放在函数里就不行呢  还是只能读取一位数字。断点执行多位数字只能执行第一位,请指教
想知道小甲鱼最近在做啥?请访问 -> 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=' ')
终于解决了,函数要放在循环体内,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你还是不了解函数是咋个用法:给你一个DEMO
def foo(s):
    lowchars = "1234567890"
    upchars = "一二三四五六七八九零"
    r=""
    for x in s:
        if x in lowchars:
            r+= upchars[lowchars.index(x)]
    return r

num = input("请输入一个数字:")
print(foo(num))    
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

把列表换成字典确实方便了许多,
    bigNum = ""
    for i in j:
        bigNum += num_dict[i]
这里理解起来有点难
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

num = input("请输入一个数字:")
print(foo(num))    
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 16:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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