《Streamlit 交互式 Web 应用开发》总结测试题
一、教学目标
- 知识目标:了解 Streamlit 库的基本功能,掌握侧边栏菜单、文本输入、视频播放、页面嵌入等组件的使用。
- 技能目标:能够独立编写简单的交互式 Web 应用,实现菜单切换、条件判断、多媒体展示等功能。
- 素养目标:培养逻辑思维能力,学会通过代码拆分与调试解决实际问题。
二、教学重点与难点
重点:
- Streamlit 基本语法(
streamlit.sidebar、option_menu组件的使用)。 - 条件判断(
if语句)与用户输入(text_input)的结合。 - 多媒体组件(
video、iframe)的嵌入方法。
- Streamlit 基本语法(
难点:
- 菜单选项与功能模块的对应逻辑(
option_menu的返回值与if分支的关联)。 - 第三方库(
streamlit_option_menu)的安装与导入。 - 本地资源(如
1.mp4)的路径配置与访问。
- 菜单选项与功能模块的对应逻辑(
三、代码拆分与解析
1. 库导入部分
python
运行
import streamlit # 导入Streamlit库,用于构建Web应用
from streamlit_option_menu import option_menu # 导入侧边栏菜单组件
from streamlit.components.v1 import iframe # 导入iframe组件,用于嵌入外部页面
- 作用:引入开发所需的库,
streamlit是核心库,option_menu用于创建侧边栏菜单,iframe用于嵌入外部网页。
2. 侧边栏菜单创建
python
运行
with streamlit.sidebar: # 在侧边栏中创建内容a = option_menu("数字小猪人网站", # 菜单标题["小猪说话","下雪","说话","笑话","数字人说话","制作数字人"], # 菜单项icons=["bug","snow","android2","bug"], # 图标(数量可少于菜单项))
- 作用:通过
option_menu在侧边栏创建菜单,变量a存储用户选择的菜单项。 - 注意:
icons参数可省略,或使用 Font Awesome 图标名称(如 "bug"、"snow")。
3. 菜单功能实现
(1)“下雪” 功能
python
运行
if a == "下雪": # 当用户选择"下雪"时c = streamlit.text_input("请输入密码:") # 获取用户输入的密码if c == '78.91': # 密码正确时触发下雪效果streamlit.snow()
- 逻辑:用户输入密码→验证通过→调用
streamlit.snow()显示下雪动画。
(2)“数字人说话” 功能
python
运行
if a == "数字人说话": # 当用户选择"数字人说话"时b = streamlit.video("1.mp4") # 播放本地视频1.mp4if b: # 若视频播放(实际需根据视频加载状态调整)import pyttsx3 # 导入语音库pyttsx3.speak("喂,你在干嘛") # 语音播报
- 逻辑:播放视频→触发语音合成(注意:
pyttsx3需额外安装,且视频播放状态判断可能需要优化)。
(3)“制作数字人” 功能
python
运行
if a == "制作数字人": # 当用户选择"制作数字人"时c = streamlit.text_input("请输入密码:") # 获取密码if c == '78.91': # 密码正确时iframe("https://www.doubao.com/chat", height=600) # 嵌入外部网页streamlit.title("小猪") # 显示标题
- 逻辑:密码验证→嵌入豆包聊天页面→显示标题。
四、归纳总结
- 核心逻辑:通过侧边栏菜单(
option_menu)获取用户选择,再用if语句分支执行对应功能,实现交互式体验。 - 组件作用:
streamlit.sidebar:创建侧边栏区域。text_input:获取用户文本输入(如密码)。snow()/balloons():显示动画效果。video():播放本地或网络视频。iframe():嵌入外部网页(如第三方工具)。
- 注意事项:
- 第三方库需提前安装(如
pip install streamlit streamlit-option-menu pyttsx3)。 - 本地文件(如
1.mp4)需与代码在同一目录,或使用绝对路径。
- 第三方库需提前安装(如
五、重点考点
option_menu的参数含义(标题、菜单项、图标)。- 条件判断语句(
if)与用户输入(text_input)的结合使用。 iframe组件的作用(嵌入外部页面)及height参数的意义。- Streamlit 动画效果函数(
snow()、balloons())的调用条件。 - 本地资源(如视频)的路径配置问题。
六、练习题
(一)填空题(10 道)
- Streamlit 中,用于创建侧边栏的关键字是______。(答案:
sidebar) option_menu函数的第一个参数是菜单的______。(答案:标题)- 获取用户文本输入的 Streamlit 函数是______。(答案:
text_input) - 播放本地视频的函数是______。(答案:
streamlit.video) - 嵌入外部网页使用的组件是______。(答案:
iframe) streamlit.snow()函数的作用是显示______效果。(答案:下雪)- 代码中
a = option_menu(...)的变量a存储的是用户选择的______。(答案:菜单项) - 导入
option_menu组件的语句是from streamlit_option_menu import ______。(答案:option_menu) - 验证密码时,使用的条件判断关键字是______。(答案:
if) iframe组件中,height=600表示嵌入区域的______为 600 像素。(答案:高度)
(二)选择题(10 道)
下列哪个库用于创建 Streamlit 的侧边栏菜单?( )A.
streamlitB.streamlit_option_menuC.pyttsx3D.iframe(答案:B)要在 Streamlit 中显示标题,应使用哪个函数?( )A.
streamlit.title()B.streamlit.text()C.streamlit.header()D.streamlit.markdown()(答案:A)代码
streamlit.text_input("请输入密码:")的作用是( )。A. 显示密码 B. 获取用户输入的密码 C. 验证密码 D. 隐藏密码(答案:B)下列哪个函数用于播放视频?( )A.
streamlit.play()B.streamlit.video()C.streamlit.movie()D.streamlit.media()(答案:B)option_menu的参数icons的作用是( )。A. 设置菜单颜色 B. 为菜单项添加图标 C. 隐藏菜单项 D. 设置菜单大小(答案:B)要嵌入外部网页,应使用哪个组件?( )A.
embedB.importC.iframeD.link(答案:C)下列哪个函数能触发气球动画效果?( )A.
streamlit.balloons()B.streamlit.ball()C.streamlit.animate()D.streamlit.effect()(答案:A)代码中
if a == "下雪":的作用是( )。A. 定义菜单项 “下雪” B. 当用户选择 “下雪” 时执行后续代码 C. 删除 “下雪” 菜单 D. 隐藏 “下雪” 菜单(答案:B)第三方库
pyttsx3的主要功能是( )。A. 播放视频 B. 语音合成(文字转语音) C. 嵌入网页 D. 创建菜单(答案:B)iframe("https://www.doubao.com/chat", height=600)中,height=600的单位是( )。A. 厘米 B. 像素 C. 英寸 D. 百分比(答案:B)
(三)编程题(10 道)
编写代码,在 Streamlit 侧边栏创建一个标题为 “我的菜单”,包含 “首页”“设置” 两个选项的菜单。(答案:)
python
运行
import streamlit from streamlit_option_menu import option_menu with streamlit.sidebar:option = option_menu("我的菜单", ["首页", "设置"])编写代码,当用户选择菜单中的 “气球” 时,显示气球动画。(答案:)
python
运行
import streamlit from streamlit_option_menu import option_menu with streamlit.sidebar:a = option_menu("菜单", ["气球"]) if a == "气球":streamlit.balloons()编写代码,使用
text_input获取用户姓名,并在页面显示 “你好,[姓名]!”。(答案:)python
运行
import streamlit name = streamlit.text_input("请输入姓名:") if name:streamlit.write(f"你好,{name}!")编写代码,嵌入百度首页(
https://www.baidu.com),高度设为 500。(答案:)python
运行
import streamlit from streamlit.components.v1 import iframe iframe("https://www.baidu.com", height=500)编写代码,创建一个菜单选项 “播放视频”,选择后播放本地视频 “video.mp4”。(答案:)
python
运行
import streamlit from streamlit_option_menu import option_menu with streamlit.sidebar:a = option_menu("菜单", ["播放视频"]) if a == "播放视频":streamlit.video("video.mp4")编写代码,实现 “密码验证” 功能:用户输入密码 “123456”,正确则显示 “验证通过”。(答案:)
python
运行
import streamlit pwd = streamlit.text_input("请输入密码:", type="password") if pwd == "123456":streamlit.write("验证通过")编写代码,在侧边栏菜单中添加 “关于” 选项,选择后显示文本 “这是一个测试应用”。(答案:)
python
运行
import streamlit from streamlit_option_menu import option_menu with streamlit.sidebar:a = option_menu("主菜单", ["关于"]) if a == "关于":streamlit.write("这是一个测试应用")编写代码,使用
streamlit.title()在页面显示标题 “我的第一个应用”。(答案:)python
运行
import streamlit streamlit.title("我的第一个应用")编写代码,创建包含 “天气” 选项的菜单,选择后显示文本 “今天晴天”。(答案:)
python
运行
import streamlit from streamlit_option_menu import option_menu with streamlit.sidebar:a = option_menu("生活助手", ["天气"]) if a == "天气":streamlit.write("今天晴天")编写代码,实现 “下雪” 功能:用户输入密码 “snow”,正确则触发下雪动画。(答案:)
python
运行
import streamlit from streamlit_option_menu import option_menu with streamlit.sidebar:a = option_menu("特效", ["下雪"]) if a == "下雪":pwd = streamlit.text_input("请输入密码:")if pwd == "snow":streamlit.snow()
