【问题标题】:List is becoming None type in python [duplicate]列表在python中变为无类型[重复]
【发布时间】:2021-06-14 15:30:00
【问题描述】:

该程序适用于带有提示的刽子手 (MIT OCW 6.0001 ps 2 )。它应该检查我到目前为止猜到的单词(这里是my_word“a_ple”)是否可以是游戏选择的单词(other_word)。因此在“a_ple”和“apple”中,因为我已经猜到了“p”,但我仍然有 index[1] 作为“_”的位置,这意味着这个词不能是 apple,并且打印的输出应该是 false

 my_word="a_ple"
other_word = "apple"
import string

def match_with_gaps(my_word, other_word):

    matching = False
    alphabet="string.ascii_lowercase"
    alphabet=list(alphabet)
    
    if len(my_word) == len(other_word):
        
        for i in range(len(my_word)):
            if my_word[i] != "_":
                for a in range(len(other_word)):
                    
                    if my_word[i] == other_word[a]:
                        if my_word[a] != "_":
                            print(type(alphabet)) #to check error in alphabet
                            if my_word[i] in alphabet:
                            
                                matching = True
                            else:
                                break
                        else:
                            break
                alphabet = alphabet.remove(my_word[i])                  

    return matching

print(match_with_gaps(my_word, other_word))

输出: 我得到一个输出作为类列表,然后在第二次迭代中我得到“无法在 NoneType 上执行删除”

我不明白我的字母表在哪一步变成了无类型。 我尝试使用字母表的克隆,但结果相同

【问题讨论】:

  • alphabet.remove(my_word[i]) 是就地操作。它返回None - 不要将其分配回alphabet
  • 我不明白我的字母列表在哪一步变成了无 - 你可以通过在每一步之后打印它或使用调试器来发现。
  • @MisterMiyagi 好的,所以我把它设置为 if word[i] in alphabet_clone alphabet_clone=alphabet.remove(word[i]) 但现在它说 x 不在列表中
  • @mkrieger1 我尝试在每一步之后打印它,但我不明白我应该把打印命令放在哪里。生病尝试调试器的事情
  • 见:link 1, link 2

标签: python


【解决方案1】:
alphabet = alphabet.remove(my_word[i]) 

remove 没有返回(它是 MisterMiyagi 提到的就地函数),请参阅:

https://docs.python.org/3/tutorial/datastructures.html

因此,如果您指定 x = foo.remove("foo"),x 将为无。不要使用 remove() 的返回。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-12
    • 2021-08-15
    • 2015-08-31
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    相关资源
    最近更新 更多