我的单词比较程序忽略了我的打印功能

时间:2019-08-30 18:48:38

标签: python python-3.x

这是我程序的一部分。它的工作是获取一个字符串,并将每个单词与字母表进行比较,如果一个字母与字母表中的一个匹配,它将打印出该字母。但是,该程序似乎忽略了我的打印命令,并继续执行其他操作,从而使输出为空。

x = "DEWIOCJWO"
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
m = 0
for i in range(len(x)):
    if x[i] == alphabet[m]:
        print(alphabet[m])
        m = 0
        break
    else:
        m = m + 1
        continue

6 个答案:

答案 0 :(得分:0)

如果x和字母的长度不同,则可以使用:

x = "DEWIOCJWO"

alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"


for i in range(min((len(x),len(alphabet))):

    if x[i] == alphabet[i]:

 print(x[i])

答案 1 :(得分:0)

使用此代码:

x = "DEWIOCJWO"
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for i in range(len(x)):
    if x[i] in alphabet:
        print(x[i] )
    else:
        continue

您通过比较字母(m)犯了错误,因为m每次都在增加

因此,您没有用于打印的匹配项

因此,使用in来查找字符串是否包含字母和print(x[i])以便打印匹配字母的字符

答案 2 :(得分:0)

如果要保持当前的逻辑,则需要第二个for循环才能正确地迭代字母。例如

float MyBuffer::getAverage(std::deque<float> input, int numberOfBuffers)

一种更干净的方法是使用正则表达式。

for i in range(len(x)):
    for m in range(len(alphabet)):
        if x[i] == alphabet[m]:
            print(alphabet[m])
            break

答案 3 :(得分:0)

您仅在检查x中的字符是否等于'A'

您可以使用:

x = "DEWIOCJWO"
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

print(*[c for c in x if c in alphabet])

输出:

D E W I O C J W O

答案 4 :(得分:0)

for X in x:
    if X in alphabet: print(X)

print(*[X for X in x if X in alphabet])

print(' '.join([X for X in x if X in alphabet]))

所有内容都能满足您的要求(在x字母中打印字母)

答案 5 :(得分:0)

如果只希望在输入字符串中打印大写字母,则此表达式可能会这样做:

import re
print(re.findall('[A-Z]', "DEWIOCJWO"))

输出

['D', 'E', 'W', 'I', 'O', 'C', 'J', 'W', 'O']

您也可以数:

import re

print(len(re.findall('[A-Z]', "DEWIOCJWO")))

将显示9