Codeeval挑战未返回正确输出。(Python)

0 投票
2 回答
562 浏览
提问于 2025-04-18 13:37

我开始在codeeval上做一些挑战,卡在了一个叫“单词转数字”的简单挑战上。

这个挑战的描述是:

给你一个字符串,里面是一些数字的文字表示,你需要把这些数字打印出来。所有的数字用分号隔开。一行最多可以有20个数字。这些数字是从“零”到“九”。

输入示例:

零;二;五;七;八;四

三;七;八;九;二

输出示例:

025784

37892

我测试过我的代码,它是可以工作的,但在codeeval上,输出总是缺少每行输入文字的最后一个数字。

这是我的代码:

import sys

def WordConverter(x):
    test=str()
    if (x=="zero"):
        test="0"
    elif (x=="one"):
        test="1"
    elif (x=="two"):
        test="2"
    elif (x=="three"):
        test="3"
    elif (x=="four"):
        test="4"
    elif (x=="five"):
        test="5"
    elif (x=="six"):
        test="6"
    elif (x=="seven"):
        test="7"
    elif (x=="eight"):
        test="8"
    elif (x=="nine"):
        test="9"
    return (test)

t=str()
string=str()
test_cases=open(sys.argv[1],'r')
for line in test_cases:
    string=line.split(";")
    for i in range(0,len(string)):
        t+=WordConverter(string[i])
    print (t)
    t=str()

我是不是哪里做错了?还是说这是codeeval的bug?

2 个回答

0

当你用 for line in test_cases: 来逐行读取文件时,每一行的内容都会包含行末的换行符(如果有的话)。这就导致最后一行的字符串后面会有一个换行符,所以这个值和 WordConverter 中的任何东西都不相等,结果会返回一个空字符串。因此,你需要在某个地方把这个换行符去掉。

0

你只需要把输入中的换行符去掉。把:

string=line.split(";")

换成

string=line.strip().split(";")

不过,使用 string 作为变量名并不是个好主意...

撰写回答