zoukankan      html  css  js  c++  java
  • 浅谈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:后期可能会增加一些内容,有任何建议也可以在评论给出,谢谢

  • 相关阅读:
    Eclipse编译 make: arm-linux-gcc:命令未找到
    ubuntu如何启用root帐号
    jlinkV8指示灯不亮 usb无法识别的问题。
    Normal Equation Algorithm求解多元线性回归的Octave仿真
    Normal Equation Algorithm
    一维高斯分布与多维高斯分布
    Locally weighted regression algorithm
    Linear Regression and Gradient Descent
    导数与偏导数 Derivative and Partial Derivative
    向量的内积、长度和正交性
  • 原文地址:https://www.cnblogs.com/SYCstudio/p/7360398.html
Copyright © 2011-2022 走看看