【问题标题】:string slicing, Search a character字符串切片,搜索一个字符
【发布时间】:2016-06-22 17:02:39
【问题描述】:

我能够找出问题所在!谢谢大家的cmets、建议和指导:)。

这是我的最终结果,效果很好:

print("您好,欢迎您!名字和姓氏是什么?")

名称 = 输入() print("有", len(name), "你名字里的字母。")

print("你想在你的名字中搜索什么字母?")

字母 = 输入()

print("你想在你的名字中搜索什么字母?")

字母 = 输入()

如果是字母.lower:

find_letter = name.find(字母)

print(find_letter+1)

如果是字母.upper:

find_letter = name.find(letter)

print(find_letter+1)

希望这在我的提交中看起来很整洁,我还没有弄清楚如何在我提交时让它看起来像代码......我认为如果它识别代码它会自动更正它

【问题讨论】:

  • 您要查找第一次出现的字母还是所有出现的字母?
  • 本来是找所有出现的,但是得到了很大的帮助:)
  • 好吧,如果你想找到所有出现的地方,str.find 不是一个好方法。它只会找到第一个匹配项,并且使用它通过连续切片来查找所有匹配项会变得很难看。
  • 我应该澄清一下,所有出现的单个字母。但我能够解决这个问题。谢谢你:)
  • “所有出现的单个字母”。 str.find 在“John Doe”中搜索“o”,它只会找到第一个匹配项。

标签: python python-3.x


【解决方案1】:

str.find 只会给你字符第一次出现的索引,例如:

>>> s = 'hello'
>>> s.find('l')
2

为了找到所有出现的地方,最好枚举字符串并记住与搜索字符匹配的字符的索引。

演示:

>>> name = input('input a name: ')
input a name: John Doe
>>> find_me = input('input character to search for: ')
input character to search for: o
>>> [index for index, char in enumerate(name) if char == find_me]
[1, 6]

结果列表告诉您字符 'o' 可以在名称的索引 1 和 6 中找到。如果您想要一个偏移量(例如,从 1 开始计算索引,而不是从 0 开始计数),请将其指定为 enumerate 的第二个参数:

>>> [index for index, char in enumerate(name, 1) if char == find_me]
[2, 7]

结果列表告诉您,字母 'o' 可以在名称的第二个和第七个字符处找到(如果您从 1 开始计数)。

编辑:

从 cmets 的讨论中,我感觉您可能只想数一个字母。

只需使用字符串的count 方法即可:

>>> name = input('input a name: ')
input a name: John Doe Schmo
>>> find_me = input('input character to search for: ')
input character to search for: o
>>> name.count(find_me)
3

【讨论】:

    【解决方案2】:

    我不确定你的意思,但是这个怎么样?

    print("Hello, and welcome! What is first and last name?")
    name = input()
    print("There are", len(name), "letters in your name.")
    print("What letter would you like to search for in your name?")
    letter = input()
    if letter:
        find_letter = name.find(letter)
        print(find_letter+1)
    

    【讨论】:

    • 解释起来很混乱,但我会尝试一下!
    • 完美!这就是我试图去的......我忘记了if语句......分配部分如下:首先,要求用户输入他们的名字,名字和姓氏。然后要求用户输入一个他们想以他们的名义找到的信。计算该字母在他们的名字中出现的次数,并打印出计数。 (一定要计算字母的小写和大写实例)
    • 问题,现在为什么只是“if letter:”?不应该像 或 = 那样添加更多内容吗?
    • 我想通了,现在对我来说很有意义! “如果字母:在名字中,那么找到字母……”类似的东西,但现在在我的脑海中是有道理的!
    猜你喜欢
    • 2020-11-27
    • 2020-01-06
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    相关资源
    最近更新 更多