这是我的代码:
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”有一个大写,它被分配了一个不同的数字给第二个没有,即使它们被认为都被转换成小写。为什么是这样?我似乎无法找到错误,所以我需要另一双眼睛来帮助。
答案 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())