使用Streamlit的st.write()等方法显示内容时始终出现None问题求助
问题分析与解决
问题根源
你的代码中recommend函数存在核心错误:
recommended_movies.append(print(movies.iloc[i[0]].title))
print()函数仅负责在控制台输出内容,它的返回值固定为None。这意味着你往recommended_movies列表中添加的全是None,后续用st.write()遍历输出时,自然会显示一串None。
修正方案
去掉print()包裹,直接将电影标题字符串添加到列表中:
def recommend(movie): movie_index = movies[movies['title'] == movie].index[0] distances = similarity[movie_index] movies_list = sorted(list(enumerate(distances)), reverse=True, key=lambda x: x[1])[1:6] recommended_movies = [] for i in movies_list: # 直接添加电影标题字符串,而非print的返回值 recommended_movies.append(movies.iloc[i[0]].title) return recommended_movies
修正后,recommended_movies列表会存储真实的电影标题,此时用st.write()、st.text()或st.markdown()遍历输出,都能正常显示推荐的电影名称。
内容的提问来源于stack exchange,提问作者Apoorva Jha
相关产品推荐
相关产品推荐

