Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codeeval质询未返回正确的输出。(Python)_Python_Python 2.7_Python 3.x - Fatal编程技术网

Codeeval质询未返回正确的输出。(Python)

Codeeval质询未返回正确的输出。(Python),python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,所以我开始在codeeval中进行挑战,我被困在一个简单的挑战中,叫做字到数字 以下是挑战描述: 具有需要打印的一组数字的字符串表示形式 这个数字。 所有数字都用分号分隔。一行中最多有20个数字。数字是0到9 输入样本: 零;二五七八四 三,;七八九两个 输出样本: 025784 37892 我已经测试了我的代码,它可以工作,但是在codeeval中,输出总是缺少输入文件中每行字的最后一个数字 这是我的代码: import sys def WordConverter(x): test=

所以我开始在codeeval中进行挑战,我被困在一个简单的挑战中,叫做字到数字

以下是挑战描述:

具有需要打印的一组数字的字符串表示形式 这个数字。 所有数字都用分号分隔。一行中最多有20个数字。数字是0到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 bug?

在测试用例中,当使用for line对文件的行进行迭代时,行的每个值都将包括行末尾的换行符(如果有)。这将导致字符串的最后一个元素在末尾有一个换行符,因此该值不会与WordConverter中的任何内容进行比较,从而导致返回一个空字符串。您需要在某个时候从字符串中删除换行符。

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

string=line.split(";")


但是,使用字符串作为变量名不是一个好的决定…

只是删除它并让它知道它是一个字符串变量,在t变量为空的情况下重复循环。t=会这样做,字符串也是一个内置模块名,最好不要隐藏名称。你也不需要在if/elif语句中使用paren。是的,我知道,但我是用Python3提交的,你不需要。在Python3中,它是一个函数,而不是Python2中的语句,但是语句不需要paren。哦,好的,谢谢你提供的信息!你到底指的是什么新行?@futofaai:在*nix上表示一行结束或在Windows上分隔两行的字符:“\n”在*nix上、\r\n”在Windows上,或“\r”在Mac OS Classic上。哦,是的,是的,对不起,忘了这一点。实际上,使用字符串作为变量名没有错。字符串模块中的大部分内容现在都是str类型的一部分,或者使用非常有限。@kindall,如果OP导入字符串,然后使用字符串作为变量名,会发生什么情况?更改变量名也有很多Python模块;你不能排除这一切。如果你输入字符串,是的,你会有问题,但我不会担心,直到你真正需要的东西,从这个模块,这将是罕见的。
string=line.strip().split(";")