写一个函数,它接受一个由字母字符组成的字符串作为输入参数,并返回最常见的字符。忽略白色空格,即不将任何白色空格算作字符。注意,这里的大写并不重要,即小写字符等于大写字符。如果某些字符之间有联系,则返回最后一个计数最多的字符
这是更新的代码
def most_common_character (input_str):
input_str = input_str.lower()
new_string = "".join(input_str.split())
print(new_string)
length = len(new_string)
print(length)
count = 1
j = 0
higher_count = 0
return_character = ""
for i in range(0, len(new_string)):
character = new_string[i]
while (length - 1):
if (character == new_string[j + 1]):
count += 1
j += 1
length -= 1
if (higher_count < count):
higher_count = count
return (character)
#Main Program
input_str = input("Enter a string: ")
result = most_common_character(input_str)
print(result)
字符串
上面是我的代码。我得到了一个错误string index out of bound
,我不明白为什么。而且代码只检查第一个字符的出现,我不知道如何继续到下一个字符,并采取最大计数?
运行代码时出现的错误:
> Your answer is NOT CORRECT Your code was tested with different inputs.
> For example when your function is called as shown below:
>
> most_common_character ('The cosmos is infinite')
>
> ############# Your function returns ############# e The returned variable type is: type 'str'
>
> ######### Correct return value should be ######## i The returned variable type is: type 'str'
>
> ####### Output of student print statements ###### thecosmosisinfinite 19
型
4条答案
按热度按时间h9vpoimq1#
您可以使用正则表达式模式来搜索所有字符。
\w
匹配任何字母数字字符和下划线;这等效于集合[a-zA-Z0-9_]
。[\w]
之后的+
表示匹配一个或多个重复。最后,使用Counter对它们进行求和,然后使用
most_common(1)
得到最大值。字符串
在平局的情况下,这是一个有点棘手。
型
在上面的代码和句子“宇宙是无限的”中,你可以看到'i'比'e'(函数的输出)出现得更频繁:
型
你可以在代码块中看到这个问题:
型
你正在遍历一个句子,并将该字母赋给变量character,而变量character不会在其他地方重新赋值。因此变量
character
将始终返回字符串中的最后一个字符。cu6pst1q2#
实际上,你的代码几乎是正确的。你需要把
count
,j
,length
移到for i in range(0, len(new_string))
里面,因为你需要在每次迭代中重新开始,而且如果count
大于higher_count
,你需要保存charater
作为return_character
并返回它,而不是character
,因为character = new_string[i]
总是字符串的最后一个字符。我不明白你为什么要用
j+1
和while length-1
。在纠正它们之后,它现在也包括领带的情况。字符串
lf5gs5x23#
如果我们忽略“tie”要求;
collections.Counter()
可以工作:字符串
范例:
型
为了返回最后一个计数最多的字符,我们可以使用
collections.OrderedDict
:型
范例:
型
注意事项:此解决方案假设
max()
返回计数最多的第一个字符(因此有一个reversed()
调用,以获取最后一个),并且所有字符都是单个Unicode码点。通常,您可能希望使用\X
正则表达式(由regex
module支持),从Unicode字符串中提取“用户感知的字符”(eXtended grapheme cluster)。wfsdck304#
字符串
输出= r