文档章节

用于解答算法题目的Python3代码框架

duyixian1234
 duyixian1234
发布于 2016/08/04 18:34
字数 811
阅读 14
收藏 0

前言

最近在实习,任务并不是很重,就利用闲暇时间使用Python3在PAT网站上刷题,并致力于使用Python3的特性和函数式编程的理念,其中大部分题目都有着类似的输入输出格式,例如一行读入若干个数字,字符串,每行输出多少个字符串等等,所以产生了很多重复的代码。 #Python代码 于是我就利用VS Code的代码片段功能编写了一个用于处理这些输入输出的代码框架,并加入了测试功能(写函数前先写测试时正确的事情)。代码如下

"""Simple Console Program With Data Input And Output."""
import sys
import io


def read_int():
    """Read a seris of numbers."""
    return list(map(int, sys.stdin.readline().split()))


def test_read_int():
    """Test the read_int function"""
    test_file = io.StringIO("1 2 3\n")
    sys.stdin = test_file
    assert read_int() == [1, 2, 3], "read_int error"


def read_float():
    """Read a seris of float numbers."""
    return list(map(float, sys.stdin.readline().split()))


def test_read_float():
    """Test the read_float function"""
    test_file = io.StringIO("1 2 3\n")
    sys.stdin = test_file
    assert read_float() == [1.0, 2.0, 3.0], "read_float error"


def read_word():
    """Read a seris of string."""
    return list(map(str, sys.stdin.readline().split()))


def test_read_word():
    """Test the read_word function"""
    test_file = io.StringIO("1 2 3\n")
    sys.stdin = test_file
    assert read_word() == ["1", "2", "3"], "read_word error"


def combine_with(seq, sep=' ', num=None):
    """Combine list enum with a character and return the string object"""
    res = sep.join(list(map(str, seq)))
    if num is not None:
        res = str(seq[0])
        for element in range(1, len(seq)):
            res += sep + \
                str(seq[element]) if element % num != 0 else '\n' + \
                str(seq[element])
    return res


def test_combile_with():
    """Test the combile_with function."""
    assert combine_with([1, 2, 3, 4, 5], '*', 2) == """1*2
3*4
5""", "combine_with error."


def main():
    """The main function."""
    pass


if __name__ == '__main__':
    sys.exit(int(main() or 0))

VS Code代码片段

添加到VS Code的默认代码片段的操作大致如下:

  • 文件->首选项->用户代码片段,选择Python

  • 编辑"python.json"文件如以下内容
{
/*
	 // Place your snippets for Python here. Each snippet is defined under a snippet name and has a prefix, body and 
	 // description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
	 // $1, $2 for tab stops, ${id} and ${id:label} and ${1:label} for variables. Variables with the same id are connected.
	 // Example:
	 "Print to console": {
		"prefix": "log",
		"body": [
			"console.log('$1');",
			"$2"
		],
		"description": "Log output to console"
	}
*/
 "Simple Console Program With Data Input And Output": {
		"prefix": "simple",
		"body": ["\"\"\"Simple Console Program With Data Input And Output.\"\"\"\nimport sys\n\ndef read_int():\n    \"\"\"Read a seris of numbers.\"\"\"\n    return list(map(int, sys.stdin.readline().split()))\n\n\ndef read_float():\n    \"\"\"Read a seris of float numbers.\"\"\"\n    return list(map(float, sys.stdin.readline().split()))\n\n\ndef read_word():\n    \"\"\"Read a seris of string.\"\"\"\n    return list(map(str, sys.stdin.readline().split()))\n\n\ndef combine_with(seq, sep=' ', num=None):\n    \"\"\"Combine list enum with a character and return the string object\"\"\"\n    res = sep.join(list(map(str, seq)))\n    if num is not None:\n        res = str(seq[0])\n        for element in range(1, len(seq)):\n            res += sep + str(seq[element]) if element % num != 0 else '\\n' + str(seq[element])\n    return res\n\n\ndef main():\n    \"\"\"The main function.\"\"\"\n    pass\n\n\nif __name__ == '__main__':\n    sys.exit(int(main() or 0))\n"
		],
		"description": "Simple Console Program With Data Input And Output"
	}
}```
 然后再编写Python代码的时候,键入"simple"就可以自动输入以上模板。

![](https://static.oschina.net/uploads/img/201608/04182804_9GZn.png "在这里输入图片标题")
# 总结
虽然Python不是特别适合解答算法题目这种性能要求很高的场景,但是在一些模拟题目如各种排队型和字符串处理的条件下,使用Python可以极大地提高解体效率,另外还可以使用cimport使用C语言的数据结构和Python的语法特性,效率不弱于原生C代码。 

© 著作权归作者所有

共有 人打赏支持
duyixian1234
粉丝 0
博文 7
码字总数 2707
作品 0
杭州
从CSDN的趣味题学PYTHON

转自:http://www.cnblogs.com/chagel/archive/2009/02/01/1381820.html 本文给出两道趣味题的Python解法 题目难度不大,都是针对字符串的操作,逻辑比较简单,灵活在对不同语言、语法的掌握...

flynewton
2010/11/16
0
0
机器学习的最佳学习路线原来只有四步

AI这个词相信大家都非常熟悉,近几年来人工智能圈子格外热闹,光是AlphoGo就让大家对它刮目相看。今天小天就来跟大家唠一唠如何进军人工智能的第一步——机器学习。 在机器学习领域,Python已...

ufv59to8
05/12
0
0
2018年被称为中国人工智能元年,人工智能技术已经成为国家战略,在2017的一年里,人工智能技术得到重视,已逐渐渗透到其它行业,无人超市、人脸识别、自动驾驶、智能家居等“黑科技”早已成为各大媒体的头

2018年被称为中国人工智能元年,人工智能技术已经成为国家战略,在2017的一年里,人工智能技术得到重视,已逐渐渗透到其它行业,无人超市、人脸识别、自动驾驶、智能家居等“黑科技”早已成为...

Python燕大侠
05/15
0
0
5位专家谈Python为何更适合做AI/机器学习

为什么Python会在这股深度学习浪潮中成为编程语言的头牌?听听大牛如何解释吧! 1.Python网络编程框架Twisted的创始人Glyph Lefkowitz(glyph): 编程是一项社交活动——Python社区已经认识...

Python新世界
07/29
0
0
测试工程师的一些面试题目(python)和总结

(一)说明 1、记录自己面试测试工程师时遇到的一些编程题(python)。 2、回顾下面试的过程,做个总结。 (二)题目 1、输入:JSON {"a":"aa","b":"bb","c":{"d":"dd","e":"ee"}} 输出:字典...

free赖权华
08/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

WinDbg

参考来自:http://www.cnit.net.cn/?id=225 SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols ctrl + d to open dump_file Microsoft (R) Windows Debugger Version 6.12.0002.633......

xueyuse0012
30分钟前
2
0
OSChina 周五乱弹 —— 想不想把92年的萝莉退货

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @罗马的王:分享松澤由美的单曲《地球ぎ》 很久没看圣斗士星矢了 《地球ぎ》- 松澤由美 手机党少年们想听歌,请使劲儿戳(这里) @开源中国首...

小小编辑
57分钟前
10
1
springBoot条件配置

本篇介绍下,如何通过springboot的条件配置,控制Bean的创建 介绍下开发环境 JDK版本1.8 springboot版本是1.5.2 开发工具为 intellij idea(2018.2) 开发环境为 15款MacBook Pro 前言 很多时候,...

贺小五
今天
1
0
javascript source map 的使用

之前发现VS.NET会为压缩的js文添加一个与文件名同名的.map文件,一直没有搞懂他是用来做什么的,直接删除掉运行时浏览器又会报错,后来google了一直才真正搞懂了这个小小的map文件背后的巨大...

粒子数反转
昨天
1
0
谈谈如何学Linux和它在如今社会的影响

昨天,还在农耕脑力社会,今天已经人工智能技术、大数据、信息技术的科技社会了,高速开展并迅速浸透到当今科技社会的各个方面,Linux日益成为人们信息时代的到来,更加考验我们对信息的处理程...

linux-tao
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部