Codeeval挑战未返回正确输出。(Python)
我开始在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
作为变量名并不是个好主意...