Codeeval Challenge未返回正确的输出。 (蟒蛇)

时间:2014-07-16 23:52:43

标签: python python-2.7 python-3.x

所以我开始在codeeval中进行挑战,并且我遇到了一个简单的挑战,叫做#34; word to digit"

这是挑战性描述:

  

您需要打印一组数字的字符串表示   这个数字。        所有数字都以分号分隔。一行中最多有20个数字。这些数字是"零"到"九"

输入样本:

  

零;二;五;七;八;四

     

3; 7; 8; 9;二

输出样本:

  

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错误?

2 个答案:

答案 0 :(得分:0)

当使用for line in test_cases:迭代文件的行时,line的每个值都将包含行末尾的换行符(如果有)。这导致string的最后一个元素在结尾处有一个换行符,因此该值不会与WordConverter中的任何内容相等,从而导致返回一个空字符串。您需要在某个时刻从字符串中删除换行符。

答案 1 :(得分:0)

您只需要从输入中删除换行符。替换:

string=line.split(";")

使用

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

但是,使用string作为变量名称并不是一个好的决定......