Python “为什么?”;对于“行中的字母”;工作,而如果;word=line.strip()“&引用;对于word中的字母;是否';不工作**文件中的字符串搜索****

Python “为什么?”;对于“行中的字母”;工作,而如果;word=line.strip()“&引用;对于word中的字母;是否';不工作**文件中的字符串搜索****,python,python-3.x,Python,Python 3.x,我们的目标是引入特定的str输入,不同的单词有相同的字母,而我已经缩小了准确率。我想不出几个问题 链接到文件: 我面临的主要问题是 for letter in line: 如果我使用 for letter in word: **# What's making the loop to break?** 它返回一个空字符串,而它们应该在 word=line.strip() 也请帮助我使比赛更准确 输入:吃 电流输出: (True, 'ate,eat,eta,tae,ta

我们的目标是引入特定的str输入,不同的单词有相同的字母,而我已经缩小了准确率。我想不出几个问题

链接到文件:

我面临的主要问题是

    for letter in line:
如果我使用

    for letter in word: **# What's making the loop to break?**
它返回一个空字符串,而它们应该在

    word=line.strip()
也请帮助我使比赛更准确

输入:吃

电流输出:

(True, 'ate,eat,eta,tae,tat,tea,tee,', 7)

输出给出了作为相同长度输入的匹配str的单词和匹配的单词数。

调试代码时,我意识到错误在于使用“word”变量x和z在最后一个循环中没有更新,只是将它们放在for循环的末尾:

for letter in word:  # Now work for in word
    if letter in allow:
        count+=1
    elif letter not in allow: # break loop for unwanted letters
        count=0
        count_2+=1
        break
    x=count
    z=count_2

为了克服这个问题,我将word中字母的
转换为一个单独的函数。这解决了迭代问题和字符串匹配的准确性

fln=open('CROSSWD.TXT')
def test_word(word,allow): # Test for a sinlgle word in a line
    for letter in word:
        if letter not in allow:
            return False
    return True
def use_only():
    count=0
    allow=input('Enter the letters: ')
    word1=''
    for line in fln: # iteration for no. of loops
        word=line.strip()
        if test_word(word,allow)==True: #verify the match
            word1+=word+','
            count+=1
    return word1, count
use_only()
输入:
字母


出:
('eel,el,ell,er,ere,err,et,lee,leer,let,letter,letter,re,ree,reveer,reveer,relet,reletter,ret,rete,retel,tee,teet,tell,tell,teller,terte,teret,tetter,tree,tret',32)
链接已断开。我不确定代码应该如何工作,但我的猜测是,非压缩行末尾的换行符意外地中断了循环,从而使代码正常工作。因此,如果你剥去这条线,它不会采用中断路径,计数也不会重置。“目标是引入特定的str输入,不同的单词有相同的字母。虽然我已经缩小了准确率百分比。我无法解决一些问题。”我不知道这是什么意思。您能否举例说明如何运行该程序,以及结果应该是什么,并说明输出与输入之间的关系?已更新输入和输出示例。只有当您在行尾点击换行符时,您才重置
count
word
没有换行符。这有帮助,谢谢。因此,最终迭代的计数没有更新。因此,x在最后一次迭代中变得多余,返回count=0&使其返回一个空字符串&count=0。我现在明白了。这降低了返回参数的准确性,提供了不必要的词语。我们已经想出了一个有效的方法。将提供答案。
fln=open('CROSSWD.TXT')
def test_word(word,allow): # Test for a sinlgle word in a line
    for letter in word:
        if letter not in allow:
            return False
    return True
def use_only():
    count=0
    allow=input('Enter the letters: ')
    word1=''
    for line in fln: # iteration for no. of loops
        word=line.strip()
        if test_word(word,allow)==True: #verify the match
            word1+=word+','
            count+=1
    return word1, count
use_only()