浅谈Python在信息学竞赛中的运用及Python的基本用法
浅谈Python在信息学竞赛中的运用及Python的基本用法
前言
众所周知,Python是一种非常实用的语言。但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序。但正如LRJ在《算法竞赛入门经典-训练指南》中所说的一样,如果会用Python,在进行一些小程序的编写,如数据生成器时将会非常方便,它的语法决定了其简约性。本文主要介绍一下简单的Python用法,不会深入。
Python的安装和实用
Linux(以Ubuntu系统为例)
一般的Linux都自带了Python,在命令行中输入Python即可进入
如果没有出现上图的文字,可以使用下面的安装方法:
sudo apt-get install python2.7
sudo apt-get install python3.4
…………
Windows系统
(笔者目前在Ubuntu系统上,等有时间上Windows再补)
两种使用Python的方法
直接在命令行中写
因为Python是解释型编译,所以可以一行一行地在命令行中写。这在初学时用来测试某个语句很实用。比如下面这个例子:
在>>>
的后面输入print "yyb love lrh"
,这条语句的作用是输出一个字符串,然后我们就可以在后面看到结果了。确实输出了一个字符串(不要在意内容)
文件
我们把Python代码存在文件中,通常以.py结尾。比如下面这个例子
我们在一个try.py
中输入下面的代码
print "hello world!"
然后在命令行中编译python 文件名
我们发现其正确的输出了。
Python的基本语法
下面来介绍一些Python的基本语法
注释
Python中的注释分单行注释和多行注释
print "Hello world" #这是一个单行注释
'''
这是多行注释
是多行注释
多行注释
行注释
注释
释
。
'''
变量及类型
Python的变量声明不需要指定类型
用=来给变量赋值,用法与C++一致。比如
yyb=141905 #这是一个整数
lrh=141936.0 #这是一个实数
str="This is a apple.I like apples.Apples are good for our health." #这是一个字符串
Python的字符串可以像字符数组一样使用(就像C++一样)比如
str="This is a apple.I like apples.Apples are good for our health."
print str[0] #输出第一个字符
print str[2:] #输出从第三个字符开始的字符串
print str[1:3] #输出从第二个到第三个的字符串,注意是左开右闭
Python的列表可以看做是一个存下任何数据类型(可以混用!)的数组,比如
List=['%',19260817,'frog',666.6]
#调用
print List[0]
print List[2]
Python的字典可以看做是一个映射(类似于C++STL中的map),同样可以混着用
Map={'name':'yyb','weight':'---','height':3.6}
#调用的时候可以
print Map['name']
print Map['yyb']
以上就是Python常用的几种数据类型。
另:Python的数类型是非常大的,不需要手写高精度
数据类型转换(常见)
函数 | 转换类型 |
---|---|
int(a) | 转换成整数 |
long(a) | 转换成长整数 |
str(n) | 转换成字符串 |
标准输入和输出
使用print输出。可以是任意类型(列表和字典都可以哦)
print 123
print 'helloworld'
print 123.2
使用input输入。
number=input("read a int:")
运算符
+
,-
,×
,/
与其意义一致
**
表示幂,a**b
表示\(a^b\)
比较运算符(如==
,!=
,<>
)与C++语言一致
位运算(如&
,|
.~
)与C++语言一致
条件语句
即if,基本语法如下:
if a==b:
print a+b
注意if后面的冒号,并且注意,Python是以缩进来判断代码块的,也就是说如果要在if中执行多个操作,要这样写
if a==b:
print a+b
print b+a
print a**b
while循环
与if的语法非常类似
i=1
while i<100:
i=i+1
随机数
数据生成器中最重要的就是随机数啦,一般来说我会这么写
import random
a=int(random.uniform(1,100)) #这里是生成[1,100]的随机整数
#如果不加int强制转换,将会生成随机小数
一般而言,使用Python的好处就是不要像C++一样指定随机数种子,一般取系统时间。而在随机生成数据对拍时1s内随机数种子不会变,这样会导致生成大量重复数据。
文件操作
open用来打开文件
比如下面这个例子
fin=open("read.txt","r") #打开一个文件读入
fout=open("output.txt","w") #打开一个文件写出
str=fin.read(10) #从read.txt中读入长度为10的字符串
fout.write(str) #输出str到output.txt中
# 注意输入输出都是字符串,所以如果要输出一个整数要采用这种方式
a=100
fout.wrote(str(a))
fin.close()
fout.close()
进阶内容
以上就是在竞赛时常用的Python语法和技巧。但实际操作时难免会碰到其他问题,更多内容可以参考,你会更多地看到Python的方便之处
http://www.runoob.com/python/python-tutorial.html
另外需要注意的是,因为Python运行比较慢,如果要对拍的话,尽量不要写Python版的。笔者一般只用Python写数据生成器和简单的小程序。
本人初学Python,如果还有错误,请诸位读者大佬指出,感激不尽。
PS:后期可能会增加一些内容,有任何建议也可以在评论给出,谢谢
浅谈Python在信息学竞赛中的运用及Python的基本用法的更多相关文章
- 【ZOJ】3785 What day is that day? ——浅谈KMP在ACM竞赛中的暴力打表找规律中的应用
转载请声明出处:http://www.cnblogs.com/kevince/p/3887827.html ——By Kevince 首先声明一下,这里的规律指的是循环,即找到最小循环周期. 这 ...
- 如何使用Python在Kaggle竞赛中成为Top15
如何使用Python在Kaggle竞赛中成为Top15 Kaggle比赛是一个学习数据科学和投资时间的非常的方式,我自己通过Kaggle学习到了很多数据科学的概念和思想,在我学习编程之后的几个月就开始 ...
- 转:浅谈CSS在前端优化中一些值得注意的关键点
前端优化工作中要考虑的元素多种多样,而合理地使用CSS脚本可以在很大程度上优化页面的加载性能,以下我们就来浅谈CSS在前端优化中一些值得注意的关键点: 当谈到Web的“高性能”时,很多人想到的是页面加 ...
- 【WebApi系列】浅谈HTTP在WebApi开发中的运用
WebApi系列文章 [01]浅谈HTTP在WebApi开发中的运用 [02]聊聊WebApi体系结构 [03]详解WebApi参数的传递 [04]详解WebApi测试和PostMan [05]浅谈W ...
- python操作txt文件中数据教程[4]-python去掉txt文件行尾换行
python操作txt文件中数据教程[4]-python去掉txt文件行尾换行 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文章 python操作txt文件中数据教程[1]-使用pyt ...
- python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件
python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...
- python操作txt文件中数据教程[2]-python提取txt文件
python操作txt文件中数据教程[2]-python提取txt文件中的行列元素 觉得有用的话,欢迎一起讨论相互学习~Follow Me 原始txt文件 程序实现后结果-将txt中元素提取并保存在c ...
- 浅谈箭头函数和setTimeout中的this
箭头函数会改变this的指向,这个大家看文档都看到过,可是有没有具体理解呢?我发现自己应该可能大概是......emmmm,然后我整理了一遍,加强一下概念吧顺带再讲一下setTimeout这个函数改写 ...
- 浅谈格雷码(Grey Code)在信息学竞赛中的应用
1.格雷码的概念 1.性质 格雷码(Grey Code),又叫循环二进制码或反射二进制码,是一种编码方式,它的基本特点是任意两个相邻的格雷码只有一位二进制数不同. 常用的二进制数与格雷码间的转换关系如 ...
随机推荐
- 开始JAVA编程的敲门砖——JAVA开发环境搭建
从头开始的java编程--JAVA开发环境搭建 一.什么是java的开发环境? 顾名思义java的开发环境是提供并保证整个java程序开发运行的必要的环境,搭建java开发环境是开始java编程的敲门 ...
- react系列从零开始-react介绍
react算是目前最火的js MVC框架了,写一个react系列的博客,顺便回忆一下react的基础知识,新入门前端的小白,可以持续关注,我会从零开始教大家用react开发一个完整的项目,也会涉及到w ...
- gulp 运用 的理解
ugulp.task('build', function() { runSequence('clean', 'copy', ['uglify', 'sass', 'htmlmin'], 'base64 ...
- python编程快速上手之第5章实践项目参考答案
#!/usr/bin/env python3.5 # coding:utf-8 # 5.6.1 # 好玩游戏的物品清单 # 给定一个字典,包含物品名称和数量,并打印出数量对应的物品 dict_stuf ...
- 设计模式 - 代理模式(jdk)
定义:为另一个对象提供一个替身或占位符以控制对这个对象的访问. 一.静态代理 静态代理说白了就是把原先直接调用被代理类的方法放到代理类来调用,同时 我们可以在代理类额外的添加一些操作. 接口: pac ...
- [POJ2104/HDU2665]Kth Number-主席树-可持久化线段树
Problem Kth Number Solution 裸的主席树,模板题.但是求k大的时候需要非常注意,很多容易写错的地方.卡了好久.写到最后还给我来个卡空间. 具体做法参见主席树论文<可持久 ...
- 二叉树 java实现
class Node { private int data; // 其他数据 private int otherData; private Node left; private Node right; ...
- 新篇章之我的java学习之路下
昨天写下了人生的第一篇博客,今天接着写我的java学习之路有关开发及框架的学习过程. 想要学好java语言,只学习一些java的基本语法对实际开发中的用处还是不大的,所以我们还要掌握一些有关javaW ...
- [luogu P3786]萃香抱西瓜 [spfa][状态压缩]
题目背景 伊吹萃香(Ibuki Suika)正在魔法之森漫步,突然,许多西瓜(Suika)从四周飞来,划出了绚丽的轨迹.虽然阵势有点恐怖,但她还是决定抱走一些西瓜. 题目描述 萃香所处的环境被简化为一 ...
- 微信token失效时间
微信token失效时间 为了使第三方开发者能够为用户提供更多更有价值的个性化服务,微信公众平台开放了许多接口,包括自定义菜单接口.客服接口.获取用户信息接口.用户分组接口.群发接口等,开发者在调用这些 ...