为什么我的代码为同一个单词提供不同的数字?

时间:2017-04-20 09:14:50

标签: python string python-3.x

这是我的代码:

restart = 'y'
while (True):
    sentence = input("What is your sentence?: ")
    sentence_split = sentence.split()
    lowersen=(sentence.lower())
    print(lowersen)
    sentence2 = [0]
    for count, i in enumerate(sentence_split):
        if sentence_split.count(i) < 2:
            sentence2.append(max(sentence2) + 1)
        else:
            sentence2.append(sentence_split.index(i) +1)
    sentence2.remove(0)
    print(sentence2)
    restart = input("would you like restart the programme y/n?").lower()
    if (restart == "n"):
            print ("programme terminated")
            break
    elif (restart == "y"):
        pass
    else:
        print ("Please enter y or n")

第4行将输入句子中的所有单词转换为小写,第5行在页面上显示。但是,如果首先以不同的格式输入单词,则会给出不同的数字。例如,我试用了代码,这就是显示的内容:

你的句子是什么?:你好,你好

你好,你好

[1,2,3]

你想重新启动程序吗? n

程序已终止

正如你所看到的,因为第一个“Hello”有一个大写,它被分配了一个不同的数字给第二个没有,即使它们被认为都被转换成小写。为什么是这样?我似乎无法找到错误,所以我需要另一双眼睛来帮助。

2 个答案:

答案 0 :(得分:0)

你执行lowersen=(sentence.lower())之后你永远不会使用lowersen的值,所以要么使用值lowersen,如:

sentence = input("What is your sentence?: ")
lowersen=(sentence.lower())
sentence_split = lowersen.split()

或简单的oneliner并完全省略lowersen:

sentence_split = sentence.lower().split()

答案 1 :(得分:0)

正如ChatterOne在这篇文章的评论中所指出的那样,代码不起作用,因为在句子分裂后它是小写的:

sentence_split = sentence.split()
lowersen=(sentence.lower())

虽然需要事先完成。

因此,代码:

sentence_split = sentence.split()
lowersen=(sentence.lower())
print(lowersen)

需要更改为:

sentence_split = sentence.lower().split()
print(sentence.lower())