python项目输出到sys和命令行中的不一样

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python项目输出到sys和命令行中的不一样相关的知识,希望对你有一定的参考价值。

算法岗笔试的编程题往往是规定输入输出格式的。并且为了在线测试通过,得严格遵守示例的输入输出格式。

大致总结了以下几种情况,以Input和sys的readline的使用为主

1、仅需输入一个参数

直接使用Input或readline即可或者用def的方法进行操作

这两者的返回值均为str,用作数字时需转换(见2)

s=input()

import sys

s = sys.stdin.readline()

2、同一行输入几个不同的参数

例:需要获取两个参数m n

s=input()

si=s.split(' ')

n=int(si[0])

m=int(si[1])

使用map函数会更方便一些

m,n = map(int, input().split())

3、同一行输入一组参数

主要是针对批量转成需要的类型(以Int为例)

import sys

x = [int(i) for i in sys.stdin.readline().split()]

x = [int(i) for i in input().split()]

x = list(map(int , input().split()))

上面两个等价,map的用法参见:http://www.runoob.com/python/python-func-map.html

4、多行输入不同参数

一种是使用sys里的readlines另一种是多次使用input或readline

例:网易的解救小易问题,第一行输入个数,第二行第三行分别输入横纵坐标

import sys

data = sys.stdin.readlines()

#提取横纵坐标

x = [int(i) for i in data[1].split()]

y = [int(i) for i in data[2].split()]

使用Input或readline的话,直接按之前的方法多行叠加

5、输入矩阵

输入矩阵的话,需要将多行输入的数存在一个二维列表里

例:第一行输入矩阵维度n m,下面输入这个大小的矩阵

try:

n,m = map(int,input().split())

except:

break

a = []

for i in range(n):

b = list(map(int,input().split()))

a.append(b)

注:加上了try except结构,是因为在牛客网写一道矩阵操作的题目时,不加会报错输出为空,但单独调试并没有问题。目前还不清楚这是因为牛客网的bug还是说有这么写的必要。参考了很多题目的正确代码,也只有这一题大家的答案都加上了这个结构。

6、除去不必要的输入

还是以上面的解救小易问题为例,假如规定的输入数据以逗号隔开(之前一直默认空格隔开),那么需要去除掉这些逗号输入

其实也就是split的用法:http://www.runoob.com/python3/python3-string-split.html

上面的split参数一直取空,也就是按默认用空格分割且不用规定分割次数

那么直接在上面的代码中,split(',')即可

7、输出数据的处理

输出往往没有那么多情况,以join的使用为主:http://www.runoob.com/python3/python3-string-join.html

要注意的是,join只能连接字符串,所以要进行格式转换

list=[1,2,3]

print(' '.join(str(i) for i in list ))

如果在前序处理中已经转成字符串,直接使用' '.join(list)即可,如需逗号分隔同理

相关资源:Python中输入和输出(打印)数据实例方法_python输入输出函数实例...
参考技术A 前一个方法是修改了这个文件里的 stdout 变量,后一个方法是修改了 sys。stdout,行为当然不一样。

python -m xx.py和python xx.py的区别

python xx.py
python -m xx.py

为什么用python -m ?
使sys.path的值不一样
python xx.py //sys.path的值,包含脚本所在的当前目录
python -m xx.py //sys.path的值,包含命令行中,输入命令时,cmd显示的目录
用python -m的目的,就是把import的那个模块目录加入到sys.path中

什么时候用-m?
sys.path中没有import模块的目录,则用-m;如果有,则不用-m









以上是关于python项目输出到sys和命令行中的不一样的主要内容,如果未能解决你的问题,请参考以下文章

python -m xx.py和python xx.py的区别

Python - 如何将python36命令行中的行保存到.py文件中?

python命令行运行py文件找不到模块的解决办法

报错笔记:linux 命令行中的print输出内容无法重定向到文件中

grep 和 Python

怎样才能让python 脚本像shell命令一样直接运行并可以接收参数