如何获得我(如果在列表中为“输入”)检查输入的每个字母,而不仅仅是输入的第一个字母?

时间:2018-10-07 20:32:09

标签: python list input

如何让我(如果在列表中为“输入”)检查输入的每个字母,而不仅仅是输入的第一个字母?

这是我的代码:

alphabet = "abcdefghijklmnopqrstuvwxyzæø˚a ?"

my_list=list(alphabet)
n= input()



def textis():
for word in n.split():
    if word in my_list:
      print(word)
    else:
        x=word.replace(n,"?")
        print (x)



textis()

,但它仅检查输入的首字母。我希望它检查输入的每个字母,并将列表中不存在的字母更改为“?”,然后使用更改“?”再次打印输入。在句子中。因此,如果输入为hello我的名字是,输出应为hello?y name?s。

2 个答案:

答案 0 :(得分:0)

这里是问题:

  • 您需要在函数中传递参数。
  • 您需要检查单词中的每个字母,而不是检查和更改整个单词。

我所做的是创建一个新变量,并对该变量进行更改,然后返回此变量。

alphabet = "abcdefghijklmnopqrstuvwxyzæø˚a ?"

my_list = list(alphabet)
n = input()

def textis(n, my_list):
  new = ''
  for letter in n:
    if letter in my_list:
      new += letter
    else:
      new += "?"
  return new

print(textis(n, my_list))

答案 1 :(得分:0)

您的功能将稍作修改即可使用。当您n.split()生成单词列表时,n.split() == ['hello', 'My', 'name', 'Is']因此,当您迭代for word in n.split(): if word in my_list时,您将比较name之类的单词与my_list中的单个字母,永远不会得到比赛。相反,您必须使用另一级嵌套for i in word,然后它将起作用! (在这种情况下,也无需从alphabet创建列表,您可以按原样使用它)

alphabet = "abcdefghijklmnopqrstuvwxyzæø˚a ?"

n= input()

def textis():
    for word in n.split():
        for i in word:
            if i in alphabet:
                pass
            else:
                word = word.replace(i,"?")
        print(word) 
textis()

所有这一切都使您的程序仍然在单独的行上返回所有单词,并且为完成该任务而做的工作有点过头了,相反,这种方法可以解决问题。

s = input('Enter a word: ')
for i in s:
    if i not in alphabet:
        s = s.replace(i, '?')
# hello ?y name ?is