0
点赞
收藏
分享

微信扫一扫

【赛码网 牛客网】输入输出总结(python版)

女侠展昭 2022-02-07 阅读 125


1. 单行输入

n, m = map(int, sys.stdin.readline().strip().split())

对该行中所有元素取整型后赋给等式左边若干参数

2. 多行输入: 先获取第一行,再把剩余行合在一个列表中

(适用于第一行告诉接下来有几行之类或者可以根据第一行得知接下来会有几行输入的题目:

如【一共n个人,每个人有若干苹果,询问m次,输出拥有每次询问苹果数目的人数】

输入:
3 2 (3个人,2次询问)
1 5 6 (3个人苹果数目)
1 (第一次寻问)
3 (第二次询问)

输出:
1
0
a,b,c = [int(i) for i in input().split()]
list = []
for i in range(hangshu):
list.append([int(i) for i in input().split()])
print(list)
a,b,c = [int(i) for i in input().split()]
list = []
for i in range(hangshu):
list.extend([int(i) for i in input().split()])
print(list)


第一行使用input().split()获取输入,对应于a,b,c等多个参数



建立空列表



使用以上abc参数设置行数读取次数hangshu



若使用.append:会把每一行输入作为一个列表,再作为原列表的元素;
【赛码网 牛客网】输入输出总结(python版)_.net



若使用.extend:会把后续行输入扩充至原列表;
【赛码网 牛客网】输入输出总结(python版)_python_02



3. 多行输入:把所有行合在一个列表中

同以上例为例:

import sys

list = []
list_new = []
for line in sys.stdin:
list_new = line.split()
list.append(list_new)
print(list)

【赛码网 牛客网】输入输出总结(python版)_python_03

import sys

list = []
list_new = []
for line in sys.stdin:
list_new = line.split()
list.extend(list_new)
print(list)

【赛码网 牛客网】输入输出总结(python版)_字符串_04

4. 多行输入:行数固定且第一行给出,各行独立获取

import sys 

lines = sys.stdin.readlines()
n = int(lines[0])
x1 = list(map(int, lines[1].split()))
x2 = list(map(int, lines[2].split()))
x3 = list(map(int, lines[3].split()))
print(n,x1,x2,x3)

输入:

3

1 5 6

1

8

输出:

3 [1,5,6] [1] [8]

第一行读取为int型

其余行读取为list类型

5. 常用字符串、列表操作

字符串:

.strip() 去除首尾空格
.split() 分割
.strip().strip(‘-a’)去除首尾空格和字符‘-a’
.replace(‘a’,’b’) 替换字符
S[:3]、S[5:] 、S[5:7](前3、第5之后、5到7)拼接字符串,去除某个字符
.index(str,beg,end) 返回开始索引或异常
.find(str,beg,end) 返回开始索引或-1

列表:

.remove(具体内容) 
.pop(索引号)
del a[索引号]

6. 赛码网输入

nums = int(input())
points = []
for i in range(0, nums):
read_list = list(map(int, input().split()))
# read_list = [int(i) for i in input().split()]
points.append((read_list[0], read_list[1]))

7. 这里以一例题为例,题目来源于赛码网上一道题

题目描述

大学的同学来自全国各地,对于远离家乡步入陌生大学校园的大一新生来说,碰到老乡是多么激动的一件事,于是大家都热衷于问身边的同学是否与自己同乡,来自新疆的小赛尤其热衷。但是大家都不告诉小赛他们来自哪里,只是说与谁是不是同乡,从所给的信息中,你能告诉小赛有多少人确定是她的同乡吗?

输入描述

包含多组测试用例,对于每组测试用例:

第一行包括2个整数,N(1 <= N <= 1000),M(0 <= M <= N*(N-1)/2),代表现有N个人(用1~N编号)和M组关系;

在接下来的M行里,每行包括3个整数,a,b, c,如果c为1,则代表a跟b是同乡;如果c为0,则代表a跟b不是同乡;

已知1表示小赛本人。

输出描述

对于每组测试实例,输出一个整数,代表确定是小赛同乡的人数

输入样例

3 1

2 3 1

5 4

1 2 1

3 4 0

2 5 1

3 2 1

样例输出

0

3

具体代码

def run(res):
visited = set()
visited.add(1)
res.sort()
# 将与1有关系的,即与小赛是老乡的,则记录在集合里,以免重复记录
for i in res:
if i[0] in visited:
visited.add(i[1])
# 集合的长度减去小赛本人则为他的老乡的人数
return (len(visited) - 1)

def main():
# while True的作用是连续输入多个测试样例,若题目没要求连续输入多个测试样例,则不需要使用while True
while True:
res = []
N, M = map(int, input().split())
for i in range(M):
a, b, c = map(int, input().split())
# a, b若为老乡,则记录下来
if c == 1:
res.append([a,b] if a < b else [b,a])
result = run(res)
print(result)
return

main()

输入输出不同点

1.这里的输入为自己键盘敲上去,当然你在本地测试需要自己敲,在网站上测试则不需要自己敲,

python3为input(),python2为raw_input();

2.若一行要求输入一个数字时,直接使用int(input())即可;

若一行要求输入多个数字时,使用map(int, input().split()),分割符用split()表示,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等,若分割符为逗号,则为split(’,’);

3.若题目要求输入的是列表,则可以使用先定义个空列表,然后利用append将数据输入进去;

4.输出则必须使用print函数将答案输出出来,直接写return ,则不会返回答案;

5.若自己定义函数,则最后切勿忘记调用该函数,否则该函数不会被调用;

6.若输出为列表,要求返回列表里的具体值,则可以使用for循环将答案全部输出出来;



举报

相关推荐

0 条评论