博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用于解答算法题目的Python3代码框架
阅读量:6255 次
发布时间:2019-06-22

本文共 3717 字,大约阅读时间需要 12 分钟。

前言

最近在实习,任务并不是很重,就利用闲暇时间使用Python3在PAT网站上刷题,并致力于使用Python3的特性和函数式编程的理念,其中大部分题目都有着类似的输入输出格式,例如一行读入若干个数字,字符串,每行输出多少个字符串等等,所以产生了很多重复的代码。

Python代码

于是我就利用VS Code的代码片段功能编写了一个用于处理这些输入输出的代码框架,并加入了测试功能(写函数前先写测试时正确的事情)。代码如下

"""Simple Console Program With Data Input And Output."""import sysimport iodef 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 resdef test_combile_with():    """Test the combile_with function."""    assert combine_with([1, 2, 3, 4, 5], '*', 2) == """1*23*45""", "combine_with error."def main():    """The main function."""    passif __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 "在这里输入图片标题")# 总结

转载地址:http://frnsa.baihongyu.com/

你可能感兴趣的文章
如何从零安装Mysql
查看>>
Appium简介及工作原理
查看>>
IP 类型转换
查看>>
mysql实践1
查看>>
struts2 Preparable接口
查看>>
hdu4578(线段树)
查看>>
写一个脚本简单检测局域网存活的机器
查看>>
Dubbo
查看>>
angular与jquery 进行json提交数据,报文头格式不一致的解决方案
查看>>
更换笔记本内存:自己动手修电脑(一)
查看>>
POJ2262-Goldbach's Conjecture
查看>>
区分扫描枪输入和键盘输入的实现
查看>>
【ssh服务配置】
查看>>
【mongdb主从复制和同步】
查看>>
下载文件downloadFile
查看>>
课后作业-阅读任务-阅读笔记-3
查看>>
hdoj1078(介绍记忆化搜索及其模板)
查看>>
cf-Round542-Div2-B(贪心)
查看>>
有关Python的PIL库的学习体会和实例
查看>>
日志挖掘(logminer)
查看>>