Python函数间变量/列表传递与调用问题求助
Python函数间变量/列表传递与调用问题求助
我太懂你这种卡壳的感觉了——变量找不到、函数调用逻辑乱,还被要求不能改指定函数,简直越调越懵。咱们先把你的问题拆解开,一步步把代码掰回正轨:
你的代码里的核心问题
- 你从来没调用
loadWords()去生成真正的words列表,全局范围内根本没有这个变量,自然会报“未定义” - 最后一行的
print(p(pickWord(words)))完全搞反了逻辑:你把pickWord的返回值当成函数来调用了,而且p本身是pickWord内部的局部变量,外部根本访问不到 pickWord返回的是随机索引,你需要用这个索引去words列表里取对应的单词,而不是直接打印索引
遵守规则的修正版代码
因为要求不能改loadWords函数和pickWord的参数,所以我们只需要修正外部的调用逻辑就行:
import random def loadWords(): f = open("wordle_words.txt", encoding="utf-8") words = [] for word in f: words.append(word.rstrip()) return words def pickWord(words): p = random.randint(0, len(words) -1) return p # 第一步:调用loadWords拿到words列表,存在变量里 words_list = loadWords() # 第二步:把words列表传给pickWord,拿到随机索引 random_index = pickWord(words_list) # 第三步:用索引取单词然后打印 print(words_list[random_index])
关键逻辑解释
- 获取words列表:
loadWords是用来生成列表的函数,你必须调用它(loadWords())才能拿到里面返回的列表,把它存在一个外部变量(比如words_list)里,这样才能传给pickWord - 函数间传递:
pickWord需要接收一个列表参数,所以直接把刚才拿到的words_list传进去就行,它会返回一个随机的索引值 - 正确取值打印:拿到索引后,用
words_list[random_index]就能取出对应的随机单词,再打印就没问题了
你之前纠结的“全局变量”“类型注解”其实都是走偏了——根本不需要全局变量,只要通过函数的返回值把局部变量带出来,存在外部变量里就行,完全不用搞那些复杂的操作。
内容来源于stack exchange
相关产品推荐
相关产品推荐

