前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【每周一坑】疯狂的小母牛 +【解答】数据库

【每周一坑】疯狂的小母牛 +【解答】数据库

作者头像
Crossin先生
发布2019-03-12 16:33:52
6520
发布2019-03-12 16:33:52
举报

今天要讲的这个,是一道算得上经典的编程问题:

母牛问题

有一头母牛,它每年年初生一头小母牛。每头小母牛从第 4 个年头开始,每年年初也生一头小母牛。(别问我公牛上哪去了……)请编程实现计算在第 n 年的时候,共有多少头母牛?

输入:年份 n

输出:母牛的数量

运行示例:

这道题,如果你网上搜一下,会有很多地方用各种语言写过。一般来说是迭代(循环)递归两种解法。不过我当年看到这道题的时候,就觉得这个很适合用面向对象的思想来实现,因为母牛就是一种类型,每头母牛都是这个类型的一个实例。这个思路你也可以考虑下。

详细解答和参考代码将在下次栏目中给出,也可以其他同学在留言中的代码。

期待各位同学提交解答,更期待你能完成整个系列。

提交代码可以使用 paste.ubuntu.com

codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。

往期问题可通过公众号菜单栏“课外辅导”栏目中进入查看。


【解答】单词本 - 数据库

上次我们的题目是使用数据库存储单词数据。这里我们以最简单的 sqlite 为例(参考:《Python 实战(2):简单的数据库):

创建数据表及读取数据

代码语言:javascript
复制
import sqlite3# 建立数据库连接conn = sqlite3.connect('words.db')cursor = conn.cursor()# 如果不存在数据表则新建create_tb_cmd='''    CREATE TABLE IF NOT EXISTS WORD    (english TEXT,     date DATE,     phonetic TEXT,     chinese TEXT    );'''cursor.execute(create_tb_cmd)cursor.execute('select english from WORD;')# 读取已有数据words = [w[0] for w in cursor.fetchall()]

写入数据

代码语言:javascript
复制
# 插入数据库insert_cmd = '''    INSERT INTO WORD    (english, date, phonetic, chinese)    VALUES (?, ?, ?, ?);'''cursor.execute(insert_cmd, (word, t, ph, chs))conn.commit()

特别说明下:Linux 和较新版的 Mac 系统都默认装有 SQLite,Windows 需要安装但也不复杂。另外 Python 直接带有对 SQLite 的支持,无需再安装其他模块。

如上述代码,直接对数据库进行读写操作,你还需要了解一点 SQL 语句的基本语法。

还有种选择就是《像对象一样对待数据》里提到的 ORM 方式来操作数据库。来自 @Nttzl 同学的解答就使用了此方法。其中数据库部分代码:

代码语言:javascript
复制
import datetime,requests,peewee
db = peewee.SqliteDatabase("words.db")
# 创建表class Word(peewee.Model):    #将表和数据库连接    class Meta:        database = db    word = peewee.CharField()    ph_en = peewee.CharField()    means = peewee.CharField()    date = peewee.DateTimeField()Word.create_table()
# 读取已有数据t_list = Word.select()words = [t.word for t in t_list]
# ...
# 写入数据t = Word()t.word = wordt.ph_en = ph_ent.means = meanst.date = datetime.date.today()t.save()
# ...
# 查找单个数据t = Word.get(word=word)print(t.word+'    ['+t.ph_en+']    '+t.means+'    '+str(t.date)+'\n')

关于 sqlite3peewee 的详细介绍可从上面提供的文章链接进入查看。

两个版本的代码均已上传,获取可在公众号里回复关键字 单词本

感谢各位同学的参与。

期待在下一期中看到你的代码!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Crossin的编程教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档