【每周一坑】数路径

代码方面的问题,欢迎大家在论坛上发帖讨论(有问必回):bbs.crossincode.com

最近有同学表示在找工作面试时遇到了在我们【每周一坑】栏目中做过的题目,于是轻松搞定。所以说嘛,功夫不负有心人,多写代码绝对是有好处滴 :)


本周的问题和寻路有关:

现有一个 m × n (m,n 都小于 100)的网格,位于左上角的 A 要去寻找右下角的 B,A 只能向下或者向右行走,现在问题来了,按照刚才的规则,A 到达 B 一共有多少种不重复的路径?

def uniquePath(m, n):    '''    :type m: int    :type n: int    :rtype: int    '''    # your code here

assert uniquePath(1, 2) == 1
assert uniquePath(3, 3) == 6
assert uniquePath(10, 20) == 6906900

期待各位同学提交解答。

提交代码可以使用 paste.ubuntu.com 或 codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。

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


【解答】缩小图片尺寸

上周的题目,核心的代码在于图片的处理,这个通过 python 的 PIL(Python Imaging Library)库的 resize() 方法即可实现。

注意:这个库是要另行安装的,如果你装过 anaconda,那直接就包含了。否则的话,你需要通过安装 Pillow 来获得 PIL 的功能:

pip install pillow

核心代码

import os
from PIL import Image
def process(addrs, dest, ratio, delete):    # addrs 为所有待处理的图片地址 类型为 list    # dest 为某个文件夹路径 类型为 str    # ratio 为缩小比例, 类型为 float    # delete 为是否删除原文件标记, 类型为 bool    for file in addrs:
       # 缩小图片并保存        im = Image.open(file)        adjusted_size = tuple([int(i*ratio) for i in im.size])        new = im.resize(adjusted_size)        name = file.split('/')[-1]        file_path = os.path.join(dest, name)
       # 查看目的文件夹是否已经存在该文件        # 存在则在文件名前添加 _        while os.path.exists(file_path):            name = '_' + name            file_path = os.path.join(dest, name)        new.save(file_path)        print('文件 {0} 经处理后保存为 {1}'.format(file, name))    # 是否删除    if delete:
       for file in addrs:            os.remove(file)        print('原文件已经删除')

关于目录及文件的处理,可以通过 os.walk() 来实现,命令行参数则可借助 argparse 模块。具体代码这里不赘述,可以在此查看:

https://gitee.com/zx576/Crossin-practices/blob/master/python_weekly_question/shrinkimg/shrink.py

完成该题目的同学有四位:

@王任 同学的代码逻辑较完整,不仅考虑了正常的情况,也考虑了异常处理:https://paste.ubuntu.com/25589912/

其他完成题目的同学还有:

@热风 同学:https://github.com/SumOfMinterm/PythonProjects-ImageProcessing/blob/master/resizeByArgs.py

@古美萌 同学: https://coding.net/u/komikado/p/crossinweek/git/blob/master/img.py

@Seerz 同学:https://paste.ubuntu.com/25513336/

感谢大家的参与!


(0)

相关推荐

  • 如何将宇宙最强 VSCode 打造为刷题神器

    Python爱好者社区 昨天 以下文章来源于ACM算法日常 ,作者dansen以下文章来源于ACM算法日常 作者dansen 不知道各位童鞋平时刷题用什么工具,我平时都是用 VSCode ,除了刷题, ...

  • Python使用pip安装Numpy模块

    Python编程学习圈 昨天安装Numpy模块一般有两种安装方法:一:下载模块对应的.exe文件,直接双击运行安装二:下载模块对应的.whl文件,使用pip安装对于exe文件的安装比较简单,都是双击运 ...

  • Ubuntu 18.04 安装vscode

    Ubuntu 18.04 安装vscode

  • 【从零学习OpenCV】4Ubuntu系统中安装OpenCV 4

    重磅干货,第一时间送达 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<从零学习OpenCV 4>.为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通 ...

  • Open3d 学习计划—13(Azure Kinect)

    Open3D是一个开源库,支持快速开发和处理3D数据.Open3D在c++和Python中公开了一组精心选择的数据结构和算法.后端是高度优化的,并且是为并行化而设置的. 本系列学习计划有Blue同学作 ...

  • 如何定时重启正在运行python程序(代码)

    一.简介 该方法是工作中根据需求设置的一个重启代码的简易例子:当我们程序一直在运行向对方提供服务,程序长时间的运行可能会出现卡顿的现象,于是我就尝试定时重启程序来解决这个问题. 二.简单介绍下sys. ...

  • 【每周一坑】阿姆斯特朗数

    这是一个很经典的编程练习题: 如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋数.自幂数). 如 407 = 43 + 03 + 73 就是一个阿姆斯特朗数. 写一段代码,输出 ...

  • 【每周一坑】乒乓数

    刚从假期回来,又要迎接周末,各位看官想必都很辛苦,所以本周每周一坑为大家准备一道简单的甜点题目,本题取材于伯克利大学 CS61 课程 homework02. 求解乒乓数,题目说明: 乒乓序列从1开始计 ...

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

    之前我们的"每周一坑"栏目挖了一个"单词本"的系列.不过看起来大家都这种中长线项目兴趣不大啊--最近的一期,直到最近几天才有一位同学提交了解答. 所以我决定暂停 ...

  • 【每周一坑】数据库 +【解答】自动翻译

    我们的系列坑 单词本 今天继续第3期. 上次我们的目标是加入自动翻译,需要用到网络接口,可以看作是一个最简单的爬虫.详细方法稍后分析,先来谈谈今天的任务: 使用数据库存储单词数据 交互效果与之前相同, ...

  • 【每周一坑】自动翻译 | 【解答】单词本

    上次我们挖了一个系列坑:[每周一坑]单词本. 第一期的目标,是实现控制台下的单词录入及保存功能.各位都有实现吗?在本文后半段,我们会来做具体分析. 在这之前,先给出新的目标: 自动给添加的单词增加翻译 ...

  • 【每周一坑】单词本 +【解答】三国演义中谁的存在感最强

    "每周一坑"这个系列在本教室的文章中,阅读量不算高.但我屡次在和读者沟通时听到说"我都有跟着每周一坑里的题在做".这是个有意思的普遍现象:内容的价值和传播度并不 ...

  • 【每周一坑】三国演义中谁的存在感最强 +【解答】暴力计算圆周率

    自然语言处理(NLP)是人工智能的一个重要领域.在对中文做自然语言处理的时候,一个很基础的操作就是分词:因为中文不像英语有现成的单词划分,需要将汉字序列切分成一个个单独的词,以便于后续的处理和分析. ...

  • 【每周一坑】暴力计算圆周率 +【解答】生成/识别二维码

    我们之前有出过一些和概率相关的问题.比如 几道有趣的概率题.三门问题.田忌赛马.蜥蜴流感与贝叶斯定理.我讲过,用计算机程序来解编程题有个很有意思的思路,就是暴力解法.就是利用电脑的计算能力,去模拟大量 ...

  • 【每周一坑】生成/识别二维码 +【解答】新个税计算器

    二维码的本质是将文本信息转化成符合一定格式的平面图片信息,以便于计算机/手机通过摄像头或扫码设备快速而准确地识别,实现信息的传递.从某种角度来说,二维码可算是打通次元壁的途径,将互联网与现实世界更便捷 ...