Python应用开发——30天学习Streamlit Python包进行APP的构建(1)
-
关于 #30天学Streamlit
#30天学Streamlit 是一个旨在帮助你学习构建 Streamlit 应用的编程挑战。
你将学会:
- 如何搭建一个编程环境用于构建 Streamlit 应用
- 构建你的第一个 Streamlit 应用
- 学习所有好玩的、能用在 Streamlit 应用里的输入输出组件
🗓️ 天 1
设置本地开发环境
在我们正式开始构建 Streamlit 应用之前,我们需要首先设置一个开发环境。
让我们从安装和配置 conda 环境开始。
安装 conda
- 前往 https://docs.conda.io/en/latest/miniconda.html ,选择与你操作系统(Windows, Mac 或 Linux)对应的
conda
版本 - 下载安装器并运行,完成
conda
的安装
新建一个 conda 环境
现在你已经装好了 conda ,让我们来创建一个 conda 环境来管理所有 Python 库依赖。
比如按照如下指令,使用 Python 3.9 版本创建一个新的环境:
conda create -n stenv python=3.9
其中 create -n stenv
表示创建一个名为 stenv
的 conda 环境,而 python=3.9
会指定 conda 环境使用 3.9 版本的 Python。
激活 conda 环境
要使用上一步刚创建好的名为 stenv
的 conda 环境,则需要使用如下的命令:
conda activate stenv
安装 Streamlit 库
激活环境之后就是时候安装 streamlit
库了:
pip install streamlit
启动示例 Streamlit 应用
用如下指令来启动示例 Streamlit 应用(图 1):
streamlit hello
附图
🗓️ 天 2
构建你的第一个 Streamlit 应用
启动你的 IDE
启动你的 IDE,可以是 Atom、VS Code 甚至是诸如 GitPod 或 GitHub.dev 等云端 IDE。
新建一个名为 streamlit_app.py
的文件。
敲下你的第一行代码
打开新建的文件,写入如下几行代码:
import streamlit as st st.write('Hello world!')
然后保存文件。
启动命令行终端
前往终端,敲入命令:
streamlit run streamlit_app.py
然后应当弹出一个浏览器窗口,其中为你新创建的 Streamlit 应用。
恭喜你! 你刚刚搭建了人生中第一个 Streamlit 应用!
🗓️ 天 3
st.button
st.button
会显示一个按钮组件。
我们要做什么?
我们今天要搭建一个简单的应用,根据按钮是否按下的状态,显示不同的文字消息。
应用的流程:
- 默认情况下输出
Goodbye
- 一旦按下按钮,则会变为显示
Why hello there
示例应用
我们将要部署的 Streamlit 应用应该看起来和下面链接中的这个差不多:
代码
以下是实现前述应用的代码:
import streamlit as stst.header('st.button')if st.button('Say hello'):st.write('Why hello there')
else:st.write('Goodbye')
逐行解释
创建 Streamlit 应用时要做的第一件事就是将 streamlit
库导入为 st
:
import streamlit as st
然后紧跟着的是应用的标题文字:
st.header('st.button')
接下来,我们会使用条件分支语句 if
和 else
来显示不同的消息:
if st.button('Say hello'):st.write('Why hello there')
else:st.write('Goodbye')
由这段代码可见, st.button()
语句接收了一个值为 Say hello
的 label
参数,会作为显示在按钮上的文字。
st.write
命令被用作显示文字消息,取决于按钮是否按下,显示的要么是 Why hello there
,要么是 Goodbye
,即如下两个语句:
st.write('Why hello there')
和
st.write('Goodbye')
需要注意的是,以上 st.write
语句是在 if
和 else
条件分支内的,才能达到前述显示不同消息的效果。
接下来做什么?
现在你已经在本地创建好了 Streamlit 应用,是时候将其部署到 Streamlit Community Cloud 了,我们在接下来的挑战中很快就会介绍到。
因为这是你挑战的第一周,因此我们在网页中直接提供了完整的代码(正如前面的代码框所示)和解决方案(示例程序)。
在接下来的挑战中,我们更推荐你首先尝试靠自己搭建 Streamlit 应用。
如果你卡住了,不必担心,可以随时看一眼解决方案是如何实现的。
参考资料
有关 st.button 的说明详见 Streamlit API 文档。
🗓️ 天 5
st.header
以标题格式显示文本。
import streamlit as stst.header('This is a header with a divider', divider='rainbow')
st.header('_Streamlit_ is :blue[cool] :sunglasses:')
st.subheader
st.write
st.write
能够在 Streamlit 应用中输出文字等内容。
除了能够输出文字,st.write()
命令还能够输出...
- 输出字符串,类似于
st.markdown()
- 输出 Python 的
dict
字典对象 - 输出
pandas
DataFrame,将数据框显示为表格 - 输出用
matplotlib
、plotly
、altair
、graphviz
、bokeh
等库所作的图表 - 以及更多!(见 API 文档中对 st.write 的描述)
我们要做什么?
我们今天要搭建一个简单的应用,来展示使用 st.write()
命令输出各种文字、数字、数据框和图表。
示例应用
我们将要部署的 Streamlit 应用应该看起来和下面链接中的这个差不多:
代码
以下是如何使用 st.write
的代码:
import numpy as np
import altair as alt
import pandas as pd
import streamlit as stst.header('st.write')# 样例 1st.write('Hello, *World!* :sunglasses:')# 样例 2st.write(1234)# 样例 3df = pd.DataFrame({'first column': [1, 2, 3, 4],'second column': [10, 20, 30, 40]})
st.write(df)# 样例 4st.write('Below is a DataFrame:', df, 'Above is a dataframe.')# 样例 5df2 = pd.DataFrame(np.random.randn(200, 3),columns=['a', 'b', 'c'])
c = alt.Chart(df2).mark_circle().encode(x='a', y='b', size='c', color='c', tooltip=['a', 'b', 'c'])
st.write(c)
逐行解释
创建 Streamlit 应用时要做的第一件事就是将 streamlit
库导入为 st
:
import streamlit as st
然后紧跟着的是应用的标题文字:
# header 是应用的标题名称
st.header('st.write')
样例 1-字符串类型
st.write
的基本用法就是现实文字和使用 Markdown 语法的文本:
st.write('Hello, *World!* :sunglasses:')
样例 2-数字类型
前面提到,st.write
还能够输出其他数据类型,比如数字:
st.write(1234)
样例 3-字典类型
数据框也能够通过如下语句显示:
df = pd.DataFrame({'first column': [1, 2, 3, 4],'second column': [10, 20, 30, 40]})
st.write(df)
样例 4--字符串和字典类型相结合
你也能传入多个参数,比如:
st.write('Below is a DataFrame:', df, 'Above is a dataframe.')
样例 5-图表数据的打印
最后,你也可以显示各种图表,只需传入图表对象即可:
#用pandsa来构建一个随机数据组,
df2 = pd.DataFrame(np.random.randn(200, 3),columns=['a', 'b', 'c'])
c = alt.Chart(df2).mark_cir
相关文章:

Python应用开发——30天学习Streamlit Python包进行APP的构建(1)
关于 #30天学Streamlit #30天学Streamlit 是一个旨在帮助你学习构建 Streamlit 应用的编程挑战。 你将学会: 如何搭建一个编程环境用于构建 Streamlit 应用构建你的第一个 Streamlit 应用学习所有好玩的、能用在 Streamlit 应用里的输入输出组件🗓️ 天 1 设置本地开发环境…...

轻兔推荐 —— 一个好用的软件服务推荐平台
给大家推荐一个好用的的软件服务推荐平台:轻兔推荐 网站界面简洁大方,没有太多杂七杂八的功能和页面,有明暗主题色可以选择,默认为亮色,可在网站上方手动切换。 每工作日都会推荐一款软件,有时会加更&…...

LeetCode hot100-57-G
17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。不会,放IDEA里执行了一下大概理解了流程 …...

基于Vue uni-app的自定义列表表格信息展示组件
摘要:随着软件技术的不断发展,前端开发面临着越来越多的挑战。特别是在业务场景复杂多变的情况下,如何提高开发效率和降低维护成本成为了关键。本文旨在探讨组件化开发在前端应用中的重要性,并以Vue uni-app自定义列表表格为例&am…...

计网(部分在session学习章)
TCP/UDP TCP:面向连接,先三次握手建立连接,可靠传输。 UDP:无连接,不可靠,传递的快。 TCP可靠传输 1.分块编号传输; 2.校验和,校验首部和数据的检验和,检测数据在传输中的变化; 3.丢弃重复数据; 4.流量控制,TCP 利⽤滑动窗⼝实现流量控制。TCP的拥塞控制采⽤…...
TypeScript 枚举
什么是 TypeScript 枚举? 简单来说,枚举是一种用于命名一组常量的数据类型。在 TypeScript 中,枚举允许我们定义一个命名的常量集合,并为这些常量分配相关的数值。通过枚举,我们可以为一组相关的值提供一个友好的名字…...

(1) 初识QT5
文章目录 Qt Quickdemo信号的命名方式 qml语言一个很重要的概念 qt 模块 Qt Quick Qt Quick是Qt5中⽤户界⾯技术的涵盖。Qt Quick⾃⾝包含了以下⼏种技术: QML-使⽤于⽤户界⾯的标识语⾔JavaScript-动态脚本语⾔Qt C具有⾼度可移植性的C库. 类似HTML语⾔…...
2024年认证杯二阶段数学建模赛题浅析
一图流 问题模型复杂度数据收集难度数据处理难度实现难度专业知识需求A题中高中中中材料科学、热物理、机械工程B题高高高高生物力学、神经学、医学成像C题高高高高环境科学、气象学、气候工程D题中中高高中高机器学习、数据科学、AI设计 【腾讯文档】2024年认证杯二阶段资料助…...
Redis教程(十八):Redis的Redisson的看门狗机制
传送门:Redis教程汇总篇,让你从入门到精通 Redisson的看门狗机制 Redisson的看门狗机制主要是指客户端在获取到锁之后,通过后台线程或定时任务自动续期的功能,以避免在锁持有期间因为处理时间过长而导致锁自动释放,进而确保操作的安全性与原子性。 这个机制的工作原理是…...

docker-compose 映射端口失败! docker端口映射失败 ,docker映射只能使用老端口,映射无法使用
1. 现象 使用docker-compose 启动项目,发现映射端口出现问题,不能映射端口! 如图: 使用原来端口是可以使用的 2. 问题原因: 使用了docker-mode 为host模式,所以不能换端口,只能写为"8086:…...

AIGC笔记--基于PEFT库使用LoRA
1--相关讲解 LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS LoRA 在 Stable Diffusion 中的三种应用:原理讲解与代码示例 PEFT-LoRA 2--基本原理 固定原始层,通过添加和训练两个低秩矩阵,达到微调模型的效果; 3--简单代…...

yolo 算法 易主
标题:YOLOv10: Real-Time End-to-End Object Detection 论文:https://arxiv.org/pdf/2405.14458ethttps%3A//arxiv.org/pdf/2405.14458.zhihu.com/?targethttps%3A//arxiv.org/pdf/2405.14458 源码:https://github.com/THU-MIG/yolov10 分析…...

用这8种方法在海外媒体推广发稿平台上获得突破-华媒舍
在今天的数字时代,海外媒体推广发稿平台已经成为了许多机构和个人宣传和推广的有效途径。如何在这些平台上获得突破并吸引更多的关注是一个关键问题。本文将介绍8种方法,帮助您在海外媒体推广发稿平台上实现突破。 1. 确定目标受众 在开始使用海外媒体推…...
怎么调试前端文件:一步步揭开前端调试的神秘面纱
怎么调试前端文件:一步步揭开前端调试的神秘面纱 在前端开发的世界中,调试是一项至关重要的技能。它能够帮助我们定位并解决代码中的错误,提升应用的性能和用户体验。本文将从四个方面、五个方面、六个方面和七个方面,为你揭示前…...

【深入学习Redis丨第一篇】Redis服务器部署详解
前言 小伙伴们大家好,我是陈橘又青,今天起 《深入学习Redis》 专栏开始更新。本专栏将专为希望深入了解Redis的开发者、系统架构师以及数据库爱好者而写的免费专栏。从Redis的基本概念入手,逐步深入到其内部实现和高级用法。希望能帮助你更好…...

git教程(IDEA + 命令行)
首先假设你已经安装 git 且 已经初始化完成: // 初始化git config --global user.name "你的用户名" git config --global user.email "你的邮箱"在当前文件夹下创建一个仓库,且该文件夹下会有多个项目 首先在当前文件夹下新建git…...

树莓派部署harbor_arm64
文章目录 树莓派4b部署Harbor-arm64版本docker-compose维护命令访问harbor 192.168.1.111认用户名密码admin/Harbor12345 树莓派4b部署Harbor-arm64版本 harbor-arm版本 部署:参考 wget https://github.com/hzliangbin/harbor-arm64/releases/download/v1.9.3/ha…...

Typora图床配置优化(PicGo-Core(command line) 插件 + gitee)
Typora图床配置优化(PicGo-Core(command line) 插件 gitee) 前言 在日常使用Typora编写markdown笔记时,经常需要插入图片来帮助理解和整理逻辑。然而,由于图片保存在本地,上传到网上时经常出现图片不见或错误警告的…...

开放式耳机推荐品牌:五款品质超凡机型必须选购
在这个快节奏的生活中,我们每个人都渴望在忙碌之余找到一片属于自己的宁静。音乐,作为连接心灵的桥梁,无疑是最为直接和有效的途径。而一款优秀的开放式耳机,不仅能让我们沉浸在美妙的旋律中,还能在保持对外界环境感知…...
【大数据面试题】31 Flink 有哪些重启方法
一步一个脚印,一天一道面试题 Flink 提供了几种不同的重启方法: 异常自动从 Checkpoint 重启: Checkpoint是Flink的另一种状态快照机制,它比Savepoint更为频繁,提供了细粒度的状态恢复点。通过配置Checkpoint,Flink会…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...

R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇
根据 QYResearch 发布的市场报告显示,全球市场规模预计在 2031 年达到 9848 万美元,2025 - 2031 年期间年复合增长率(CAGR)为 3.7%。在竞争格局上,市场集中度较高,2024 年全球前十强厂商占据约 74.0% 的市场…...

【51单片机】4. 模块化编程与LCD1602Debug
1. 什么是模块化编程 传统编程会将所有函数放在main.c中,如果使用的模块多,一个文件内会有很多代码,不利于组织和管理 模块化编程则是将各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数声明,其他.c文…...