如何让我(如果在列表中为“输入”)检查输入的每个字母,而不仅仅是输入的第一个字母?
这是我的代码:
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。
答案 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