<iframe allowfullscreen="allowfullscreen" frameborder="no" height="500px" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" scrolling="no" src="https://inscode.csdn.net/@Astron/Streamlit/embed" width="100%"></iframe>
以下是对上面运行代码的详细说明:
主要构建了一个基于 streamlit
库的创意故事生成器应用程序。
首先,引入了 streamlit
库。然后,使用 st.markdown
函数设置了一个居中的标题 创意故事生成器
。
接下来,定义了一个名为 validate_input
的函数,用于检查输入字符串是否每行都不为空。
接着,定义了一些通用的列表 CHARACTERS
、SCENES
和 EVENTS
,这些可能是用于故事生成的各种元素。
然后,定义了一个包含各种故事模板的字典 story_templates
。
generate_random_value
函数用于从给定的可能值列表中随机选择一个值。
generate_story
函数是核心的故事生成函数。它首先随机选择一个与所选风格对应的故事模板,然后通过正则表达式找出模板中的占位符。对于不在参数中的占位符,如果不是特定的 'character'
、'scene'
或 'event'
,就随机生成一个值进行填充。最后,使用 format
方法将选择的角色、场景、事件和生成的随机值填充到模板中生成故事。
定义了一个包含多种故事风格的元组 story_styles
。
通过 st.columns
创建了两列用于页面布局。
在左边列中,使用 st.selectbox
分别创建了选择故事风格、角色、场景和事件的下拉框,使用 st.number_input
创建了输入要生成故事数量的输入框,并通过一个按钮触发故事生成的操作。当点击按钮时,会根据选择的内容生成指定数量的故事,并将其存储在 st.session_state
中,同时将当前页面状态设置为 'story_page'
。
在右边列中,如果 st.session_state
中存在生成的故事并且当前页面状态为 'story_page'
,则将生成的故事逐个显示出来。
总的来说,这段代码通过用户的选择和随机生成的元素,组合生成不同风格的故事,并以简洁直观的页面布局展示给用户,为用户提供了一个有趣且具有一定创意的故事生成体验。但可能需要注意的是,对于故事模板的丰富性、随机生成的多样性以及异常情况的处理等方面,还有进一步优化和完善的空间。比如可以增加更多不同类型和风格的故事模板,使生成的故事更加丰富多样;在随机生成元素时,可以考虑设置一些限制条件,以避免生成不符合逻辑或不合理的内容;对于可能出现的输入错误或异常情况,如用户输入不符合要求的数据、随机选择函数无法获取有效值等,需要添加更完善的错误处理机制,以提高程序的稳定性和用户体验。
标签:story,故事,生成器,st,随机,Streamlit,生成,创意,模板 From: https://blog.csdn.net/qq_31426349/article/details/143134700