所以我开始在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错误?
答案 0 :(得分:0)
当使用for line in test_cases:
迭代文件的行时,line
的每个值都将包含行末尾的换行符(如果有)。这导致string
的最后一个元素在结尾处有一个换行符,因此该值不会与WordConverter
中的任何内容相等,从而导致返回一个空字符串。您需要在某个时刻从字符串中删除换行符。
答案 1 :(得分:0)
您只需要从输入中删除换行符。替换:
string=line.split(";")
使用
string=line.strip().split(";")
但是,使用string
作为变量名称并不是一个好的决定......