python简单用法_python的简单用法

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的值所替换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值