def get_middle_character(odd_string):
variable = len(odd_string)
x = str((variable/2))
middle_character = odd_string.find(x)
middle_character2 = odd_string[middle_character]
return middle_character2
def main():
print('Enter a odd length string: ')
odd_string = input()
print('The middle character is', get_middle_character(odd_string))
main()
我需要弄清楚如何在给定的奇数长度字符串中打印中间字符。但是当我运行这段代码时,我只得到最后一个字符。问题是什么?
原文由 computer science noob 发布,翻译遵循 CC BY-SA 4.0 许可协议
您需要更仔细地考虑您的代码实际在做什么。让我们用一个例子来做到这一点:
假设我们调用
get_middle_character('hello')
,所以odd_string
是'hello'
:到目前为止一切正常。
这是第一件明显奇怪的事情——你为什么要字符串
'2'
?那就是中间字符的索引,你不就是想要一个整数吗?此外,您只需要一对括号,另一组是多余的。显然你不能
str.find
子字符串'2'
在odd_string
中,因为它从来不存在。str.find
返回-1
如果找不到子串;您应该改用str.index
,当它找不到子字符串时,这会给您一个清晰的ValueError
。请注意,即使您正在搜索中间字符,而不是中间字符的字符串化索引,您也会遇到麻烦,因为
str.find
给出子字符串出现的 第一个 索引,它可能不是一个你想要的(考虑'lolly'.find('l')
…)。由于 Python 允许从序列末尾开始进行负索引,
-1
是最后一个字符的索引。您实际上可以简化为
return odd_string[middle_character]
,并删除多余的分配;你仍然有错误的答案,但是来自更简洁的代码(并且没有middle_character2
,这是一个糟糕的名字)。希望您现在可以看到哪里出了问题,并且很明显您应该如何修复它。下次在这里提问之前,请使用例如 Python Tutor 来调试您的代码。