美文网首页
python的简单用法

python的简单用法

作者: wenyilab | 来源:发表于2020-02-12 00:03 被阅读0次

    1、标准输入与输出
    python文件为 prog.py 输入文件为 test.in

    python prog.py < test.in
    

    将程序的输出记录到文件test.out 中

    python prog.py < test.in > test.out
    

    将程序输出记录到文件test.out中,同时显示在屏幕上

    python prog.py < test.in | test.out
    

    输入数据文件可以使用input()按行读取,以字符串形式返回,不会返回换行符,而sys模块中的stdin.readline()会返回换行符,执行速度是input()的4倍。

    input()
    stdin.readline()
    

    map的使用,当读取的行是一系列整数组成,并且使用空格分隔时,可以使用map转换成整数

    import sys
    h,w = map(int,sys.stdin.readline().split()
    

    当程序读取数据时遇到性能问题时,可以仅使用一次系统调用,把整个文件读入,速度可提升2倍。在下列语句中,假设输入数据中只有来自多行输入的整数,os.read()方法的参数0表示标准输入流,常量M必须是一个大于文件大小的限值。比如,文件包含了10^7个大小在10^9之间的整数,那么每个整数最多只能有10个字符,而两个整数之间最多只有两个分隔符(\r和\n,即回车和换行),我们可以选择M=12 *10^7。

    import os
    inputs = list(map(int,os.read(0,M).split()))
    

    例子:读取三个矩阵A、B、C,并测试AB = C
    在此例子中,输入格式如下:第一行包含一个唯一的整数n,接下来的3n行,每行包含n个被空格分隔的整数。这些行代表三个n*n矩阵A、B、C内的所有元素。例子的目的是测试矩阵AB的结果是否等于C。最简单的方法是使用矩阵乘法的解法,复杂度是O(n^3)。但是,有一个可能的解法,复杂度仅O(n^2),即随机选择一个向量x,并测试A(Bx) = Cx。这种测试方法叫做Freivalds比较算法。那么程序计算出的结果相等,而实际AB != C的概率多大呢,如果计算以d为模,错误的最大概率为1/d。这个概率会在多次重复测试后变得极小,一下代码产生错误概率已经低至10^-6量级

    from random import randint
    from sys import stdin
    
    def readint():
        return int(stdin.readline())
    
    def readarray(typ):
        return list(map(typ,stdin.readline().split()))
    
    def readmatrix(n):
        M = []
        for _ in range(n):
            row = readarray(int)
            assert len(row) == n
            M.append(row)
        return M
    
    def mult(M,v):
        n = len(M)
        return [sum(M[i][j] * v[j] for j in range(n)) for i in range(n)]
    
    def freivalds(A,B,C):
        n = len(A)
        x = [randint(0,1000000) for j in range(n)]
        return mult(A,mult(B,x)) == mult(C,x)
    
    if __name__ == "__main__":
        n = readint()
        A = readmatrix(n)
        B = readmatrix(n)
        C = readmatrix(n)
        print(freivalds(A,B,C))
    

    2、显示格式
    程序输出必须使用print命令,它会根据你提供的参数生产一个新的行,行尾的换行符可以通过参数end="取消掉。为显示指定小数位数的浮点数,可以使用%运算符,方法为“格式%值”。第i个占位符会被值列表中的第i个值替换。以下例子显示了一行格式类似“Case #1: 51.10 Paris”的字符串:

    print("Case #%i: %.02f  %s" %(testCase,precentage,city))
    

    在上面的例子中%i被整型变量testCase的值所替换,%.02f被浮点型变量percentage的值所替换并保留两位小数,%s被字符串变量city的值所替换。

    相关文章

      网友评论

          本文标题:python的简单用法

          本文链接:https://www.haomeiwen.com/subject/kleethtx.html