Python 我错过了什么?(项目编号P017)

Python 我错过了什么?(项目编号P017),python,string,Python,String,因此,我在查看以下简单代码时遇到困难: a = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'] b = ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'] c = ['twenty', 'thirty', 'forty', 'fif

因此,我在查看以下简单代码时遇到困难:

a = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
b = ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen']
c = ['twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety']
d = ['hundred', 'thousand', 'and']
e = a + b + c + d

sum_0 = 0
for i in e:
    sum_0 += len(i)

# 21, 22.. 99
sum_1 = 0
for i in c:
    for j in a:
        sum_1 += len(i + j)

# 100, 200.. 900
sum_2 = 0
for i in a:
    sum_2 += len(i + d[0])

# 101, 102.. 909
sum_3 = 0
for i in a:
    for j in a:
        sum_3 += len(i + d[0] + d[2] + j)

# 110, 111.. 119
sum_4 = 0
for i in a:
    for j in b:
        sum_4 += len(i + d[0] + d[2] + j)

# 120, 130.. 990
sum_5 = 0
for i in a:
    for j in c:
        sum_5 += len(i + d[0] + d[2] + j)

# 121, 122.. 999
sum_6 = 0
for i in a:
    for j in c:
        for k in a:
            sum_6 += len(i + d[0] + d[2] + j + k)
当我
打印sum_0+sum_1+sum_2+sum_3+sum_4+sum_5+sum_6+3
时,我得到21134,比正确答案多10。我错过了什么


*顺便说一句,
sum\u 6
之后的
3
是“一千”中“一”的长度

您要数两次
100(一百)

第一次在这里(实际上使用了“
”和“
”,但是
one
都是三个字母长):

第二次在这里:

# 100, 200.. 900
sum_2 = 0
for i in a:
    sum_2 += len(i + d[0])

您正在数两次
100(一百)

第一次在这里(实际上使用了“
”和“
”,但是
one
都是三个字母长):

第二次在这里:

# 100, 200.. 900
sum_2 = 0
for i in a:
    sum_2 += len(i + d[0])

仅提及一条评论:解决projecteuler问题不是用一个非常混乱的代码强制执行解决方案,但是,自己思考这个问题,并试图找到一个好的、优雅的算法,它能在几秒钟内完成计算。@septi我对编程和python相对较新。@Deneb这个问题最好发布到codereview.stackexchange.com上。这里只提一句话:解决projecteuler问题并不是强迫用户去做使用非常混乱的代码解决问题,但要自己思考这个问题,并试图找到一个在几秒钟内就能完成计算的漂亮而优雅的算法。@septi我对编程和python比较陌生。@Deneb最好将这个问题发布到codereview.stackexchange.com