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