示例与作品

判断一门语言值不值得学,最好的办法是看它写过什么。 下面这些都在仓库里,clone 下来就能跑。

完整项目(7 个 · 共 914 行)

项目做了什么规模
基石自述站352 行
小网站跑起来:87 行
待办清单用基石写的命令行待办工具:增删改查 + JSON 持久化 + 命令行参数。145 行
成绩分析用基石写的真实数据处理工具:读一个带「姓名,语文,数学,英语」表头的 CSV,82 行
排序跑分用基石写的三个排序实现 + 跑分表:正确性用内建 排序() 当裁判,110 行
日志统计用基石写的真实日志分析工具:读一个服务器访问日志(每行一条),统计73 行
网页采集用基石写的真实网页采集脚本:抓取一个网页,用正则提取所有链接(标题 + 网址),65 行

挑几段看看

下面是从项目里截的真实代码(不是为演示编的):

待办清单读写 JSON 文件、按行渲染清单

导入 文件
导入 系统
导入 时间
导入 json
导入 文本 为 文本模块
令 数据文件 = "待办.json"
函数 读任务():
    如果 非 文件.文件存在(数据文件):
        返回 []
    尝试:
        令 内容 = json.读文件(数据文件)
        如果 类型(内容) == "列表":

成绩分析读表格、算平均与排名

导入 表格
导入 文本
函数 数字(值):
    尝试:
        返回 小数(值)
    捕获 值错误:
        返回 0
函数 总分(行, 科目):
    令 合计 = 0
    遍历 i 在 范围(1, 长度(行)):
        合计 = 合计 + 整数(数字(行[i]))
    返回 合计

日志统计按行扫日志、统计状态码

导入 容器
函数 解析行(行):
    令 段 = 行.拆分(" ")
    如果 长度(段) < 5:
        返回 空
    返回 [段[0], 段[3], 段[4]]
函数 统计(日志路径):
    令 有效 = []
    用 打开(日志路径) 为 日志:
        遍历 行 在 日志:
            令 行 = 行.去空白()
            如果 行 != "":

网页采集发起请求、解析 HTML

导入 网络
导入 正则
导入 表格
导入 html
函数 提取链接(页面):
    令 结果 = []
    遍历 组 在 html.取链接(页面):
        令 标题 = 组[0]
        令 网址 = 组[1]
        如果 网址.开头是("http"):
            结果.追加([标题, 网址])
    返回 结果

教程里的例子(10 个)

配套 10 章教程, 每个例子都是完整可跑的小程序 —— 从打印一行字到记账程序。

文件规模
01_你好.jsh6 行
02_计算器.jsh8 行
03_清单.jsh11 行
04_猜数字.jsh16 行
05_九九乘法表.jsh6 行
06_函数演示.jsh26 行
07_通讯录.jsh18 行
08_读写文件.jsh17 行
09_成绩表分析.jsh29 行
10_记账程序.jsh38 行

这个站也是基石写的

官网里的「自述」页由一个用基石写的程序 生成(examples/projects/基石自述站/生成.jsh,300 多行)—— 它读仓库里的真数据(版本号、测试数、里程碑),当场算出页面。 所以那页上的数字不会过期。

换句话说:这个语言至少已经能写「读文件、处理文本、生成 HTML」这类活了。 这类活占程序员日常的一大半。

自己动手

clone 下来直接跑仓库里的例子(不用装,源码即可运行)git clone https://github.com/benxiaoniao/JISHI.git
cd JISHI
python -m oracle.jishi.cli examples/projects/待办清单/待办.jsh