Ciel's blog

Hi, this is Ciel!

最近想把个人博客的网页做成二维码弄到简历上。但是因为coding的一些限制,

微信无法直接扫描打开,所以就需要绑定自定义域名啦。

步骤如下:

Step1 - 购买域名

看了知乎推荐,在Uniregistry上买的域名(好像没办法用支付宝),但是发现不管有没有梯子打开和登录异常慢,不推荐。

Step2 - 添加SDN解析

购买好域名后,在购买网页的已买域名管理种添加新的DNS解析,

image-20200225145626385

Type选择 CNAME,Data为静态网站详情页中的访问地址(例如:xxx.coding-pages.com)。

Step3 - Coding中绑定

在静态网站设置页里做如下配置就好了,新的域名就是添加的DNS中的Host+自己的域名

image-20200225145906648

证书状态正常后就可以通过自定义的域名访问自己的博客啦。

后续

在线找了一个二维码生成工具,生成的网址活码如下,

image-20200227142804191

现在可以扫码访问啦。

为了和简历颜色呼应,用了骚骚的紫色哈哈哈。

我的Python学习线路

平时一直在用和零散地学习Python,一直都是需要什么了再来查,但是没有系统地进行学习。现在参考此文的学习路线,我做了自己的学习规划。

学习资料

  • 《流畅的python》:不是特别基础的一本书,但是感觉讲得很好
  • 莫烦PYTHON:莫烦PYTHON上除了Python还有ML,数据处理等内容的学习。视频结合文字,不知道为什么,莫名喜欢这个教程(不太喜欢那些规规矩矩的教程),哈哈(但是作者也有些日常翻车,,,所以还是结合下其他教程吧。)

Steps

基础

  • 结合Python的基础(Python的输入输出,内置数据类型等)

  • 熟悉python的IDE(Pycharm),包括快捷键和如何调试

  • 练手python

    • 牛客网/leetcode上的题
    • 《流畅的python》第二部分-数据结构
    • 初级问题:交换两个变量值,将摄氏度转换为华氏温度,求数字中各位数之和,判断某数是否为素数,生成随机数,删除列表中的重复项等
    • 中级问题:反转一个字符串(回文检测),计算最大公约数,合并两个有序数组,猜数字游戏,计算年龄等
  • 使用数据结构:栈,队列,字典,元组,树,链表。

  • 实现常见算法:搜索(线性和二分查找)、排序(冒泡排序、选择排序)、递归函数(阶乘、斐波那契数列)、时间复杂度(线性、二次和常量)


进阶

  • Python面向对象编程
    • 《流畅的python》第四部分-面向对象惯用法
  • 协程
  • Numpy

项目实战

(在模仿学习之后,需要独立思考的实践!)

  • 简单计算器(Tkinter):
  • Django框架:使用Vue+Django rest framework框架搭建一个校史馆人员管理系统(正好帮助自己的日常学生工作)
  • 了解Flask框架
  • 爬虫:完善自己之前写得lowlow的安居客/企查查的爬虫项目

其他内容

  • 数据库基础:基本 SQL 查询(创建表、选择、Where 查询、更新)、SQL 函数(Avg、Max、Count)、关系数据库(规范化)、内连接、外连接等
  • 使用 Python 数据库:利用一种数据库框架(SQLite 或 panda),连接到一个数据库,在多个表中创建并插入数据,再从表中读取数据。
  • API:如何调用 API。学习 JSON、微服务(micro-service)以及表现层应用程序转换应用程序接口(Rest API)。
  • 单元测试、日志、调试:学习单元测试(PyTest),如何设置和查看日志,以及使用断点调试。

1281. Subtract the Product and Sum of Digits of an Integer

题目

Given an integer number n, return the difference between the product of its digits and the sum of its digits.

Example 1:

1
2
3
4
5
6
Input: n = 234
Output: 15
Explanation:
Product of digits = 2 * 3 * 4 = 24
Sum of digits = 2 + 3 + 4 = 9
Result = 24 - 9 = 15

Example 2:

1
2
3
4
5
6
Input: n = 4421
Output: 21
Explanation:
Product of digits = 4 * 4 * 2 * 1 = 32
Sum of digits = 4 + 4 + 2 + 1 = 11
Result = 32 - 11 = 21

Constraints:

  • 1 <= n <= 10^5

解题

我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
class Solution(object):
def subtractProductAndSum(self, n):
"""
:type n: int
:rtype: int
"""
product = 1
sum = 0
for d in str(n).strip():
product *= int(d)
sum += int(d)
return product - sum

高赞代码:

1
2
3
4
class Solution(object):
def subtractProductAndSum(self, n):
A = map(int, str(n))
return reduce(operator.mul, A) - sum(A)

总结

  1. reduce函数
1
reduce(function, iterable[, initializer])
  • function – 函数,有两个参数
  • iterable – 可迭代对象
  • initializer – 可选,初始参数

reduce函数与map函数不同,它们都将可迭代对象的每一个元素带入第一个函数中,但是前者将结果累计,后者则是分别对每个元素作用。

  1. python标准库中的operator模块

operator模块提供了一系列与Python自带操作一样有效的函数。

operator模块是用c实现的,所以执行速度比python代码快。

当使用 map、filter、reduce这一类高阶函数时,operator模块中的函数可以替换一些lambda。例如:

1
reduce(lambda x,y:x*y, [1,2,3,4])

可以替换为:

1
reduce(operator.mul, [1,2,3,4])

References

python标准库之operator(运算符模块)

0%