Python程序获取粉丝数并展示人物详情时返回None问题
问题排查与解决:粉丝数变量返回None的问题
问题原因分析
person_one函数赋值逻辑颠倒
原代码中person['follower_count'] = person_first_followers是把全局变量的初始None值覆盖了数据里的真实粉丝数,正确逻辑应该是把选中人物的粉丝数赋值给全局变量person_first_followers。person_two函数未声明全局变量
函数内部的person_second_followers是局部变量,没有用global关键字声明,导致外部的全局变量始终保持初始的None值。另外,person_two_list.append(person)返回None,没必要赋值给second_person;循环for person in range(1)属于冗余代码,直接随机选一次即可。
修复后的完整代码
from game_data import data from art import logo, vs import random print(logo) person_one_list = [] person_two_list = [] person_first_followers = None person_second_followers = None def person_one(): global person_first_followers # 随机选取人物 person = random.choice(data) person_one_list.append(person) # 正确赋值:将人物的粉丝数存入全局变量 person_first_followers = person['follower_count'] print(f"Compare A: {person['name']}, {person['description']}, from {person['country']}") print(f"Follower count inside person_one(): {person_first_followers}") person_one() print(f"Follower count outside person_one(): {person_first_followers}") print(vs) def person_two(): """生成第二个随机人物并存入列表""" global person_second_followers person = random.choice(data) person_two_list.append(person) # 声明全局变量后赋值 person_second_followers = person['follower_count'] print(f"Against B: {person['name']}, {person['description']}, from {person['country']} ") person_two() print(person_second_followers) choice = input("Who has more followers? Type 'A' or 'B' ")
额外优化提示
- 可以添加判断逻辑,避免两次选中同一个人物
- 如果后续不需要用到
person_one_list和person_two_list,可以直接移除,减少不必要的内存占用
内容的提问来源于stack exchange,提问作者Leo D
相关产品推荐
相关产品推荐

