python:各种字符输入、数值输入总结——OJ在线编程常见输入输出练习场

0. stdin()运行方式:

  • 在pycharms中保存.py文件运行,在4.run中输入
  • 在spyder就不可以
  • 在Ipython中可以
  • 在jupyternotebook中需要特殊处理:使用python3的 io模块的StringIO将字符串替换成sys.stdin

1. input()方法和stdin()区别

strip()用于字符串头部和尾部的指定字符串,默认为空格或换行符。
split()是拆分字符串,然后把分割之后的字符串放到一个列表里并返回。默认情况下是根据换行符"\n"和空格" ",以及“\t”进行分割。

  • input()方法和stdin()类似,不同的是input()括号内可以直接填写说明文字。
  • sys.stdin.readline( )会将标准输入全部获取,包括末尾的'\n',因此用len计算长度时是把换行符'\n'算进去了的,但是input( )获取输入时返回的结果是不包含末尾的换行符'\n'的。因此如果在平时使用sys.stdin.readline( )获取输入的话,不要忘了去掉末尾的换行符,
  • 可以用strip( )函数(sys.stdin.readline( ).strip('\n'))或sys.stdin.readline( )[:-1]这两种方法去掉换行。

2.总结(两种方案)

1.接收字符

line=input().split()#空格隔开

line=sys.stdin.readline().split()

2.接收数值

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

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

3.不确定行的输入

ans=[]
for line in sys.stdin:
	l1 = list(map(int,line.split()))
	#或者
	#l1 = list(map(int,input().split()))
	ans.append(l1)
while True:
    try:
   		l1=list(map(int,sys.stdin.readline().split()))
   		#或者
        #l1=list(map(int,input().split()))
        ans.append(l1)
    except:
        break

第二种可以在ipython输入,输完后按ctrl+c结束,但是第一种不知道怎么结束输入。
4.确定行的输入

for line in sys.stdin
	l1 = list(map(int,line.split()))
	temp = line.split()
	
t = int(input())
ans= []
for i in range(0,t):
   	l1=list(map(int,sys.stdin.readline().split()))
    #l1=list(map(int,input().split()))
    ans.append(l1)

3.OJ在线编程常见输入输出练习场

题目1:计算a+b
输入: 输入包括两个正整数a,b(1 <= a, b <= 10^9), 输入数据包括多组
1 5
10 20
输出: 输出a+b的结果
6
30

while True:
    try:
        a,b=map(int,input().strip().split())
        print(a+b)
    except:
        break
import sys
for line in sys.stdin:
    a, b = list(map(int, line.split()))
    #a,b=[1,2]  a=1,b=2
    print(a+b)

题目2: 计算a+b
输入: 输入 第一行包括一个数据组数t(1 <= t <= 100)
接下来每行包括两个正整数a,b(1 <= a, b <= 10^9)
2
1 5
10 20
输出: 输出a+b的结果
6
30

t = int(input())
a = []
for i in range(0,t):
    a = list(map(int,input().split()))
    print(sum(a))
import sys
for line in sys.stdin:
    if len(line.split())==1:
        continue
    print(sum(list(map(int,line.split()))))

题目3: 计算a+b
输入: 输入包括两个正整数a,b(1 <= a, b <= 10^9), 输入数据有多组, 如果输入为0 0则结束输入
1 5
10 20
0 0
输出: 输出a+b的结果
6
30

while True:
    a,b=map(int,input().split())
    if a==0 and b==0:
        break
    else:
        print(a+b)
import sys
for line in sys.stdin:
    a = list(map(int, line.strip().split()))
    #a = line.strip().split()
    #a = [int(x) for x in a ]
    if a==[0,0]:
        break
    print(sum(a))

题目4: 计算一系列数的和
输入: 输入数据包括多组。
每组数据一行,每行的第一个整数为整数的个数n(1 <= n <= 100), n为0的时候结束输入。
接下来n个正整数,即需要求和的每个正整数。
4 1 2 3 4
5 1 2 3 4 5
0
输出: 每组数据输出求和的结果
10
15

while True:
    l1 = list(map(int,input().split()))
    if l1[0] == 0:
        break
    print(sum(l1[1:]))
import sys
for line in sys.stdin:
    l1 = list(map(int,line.split()))
    if l1[0] == 0:
        break
    print(sum(l1[1:]))

题目5: 计算一系列数的和
输入: 输入的第一行包括一个正整数t(1 <= t <= 100), 表示数据组数。
接下来t行, 每行一组数据
每行的第一个整数为整数的个数n(1 <= n <= 100)。
接下来n个正整数, 即需要求和的每个正整数。
2
4 1 2 3 4
5 1 2 3 4 5
输出: 每组数据输出求和的结果
10
15

t = int(input())
a = []
for i in range(0,t):
    a = list(map(int,input().split()))
    print(sum(a[1:]))
import sys
num = input()#人为地规定输入几行,这时sys.stdin就有几行
for line in sys.stdin:
    a = list(map(int, line.split()))
    a = a[1:]
    print(sum(a))

题目6: 计算一系列数的和
输入: 输入数据有多组, 每行表示一组输入数据。
每行的第一个整数为整数的个数n(1 <= n <= 100)。
接下来n个正整数, 即需要求和的每个正整数。
4 1 2 3 4
5 1 2 3 4 5
输出: 每组数据输出求和的结果
10
15

while True:
    try:
        l1 = list(map(int,input().split()))
        print(sum(l1[1:]))
    except:
        break
import sys
for line in sys.stdin:
    a = list(map(int, line.split()))
    a = a[1:]
    print(sum(a))

题目7: 计算一系列数的和
输入: 输入数据有多组, 每行表示一组输入数据。
每行不定有n个整数,空格隔开。(1 <= n <= 100)。
1 2 3
4 5
0 0 0 0 0 0
输出: 每组数据输出求和的结果
6
9
0

while True:
    try:
        l1 = list(map(int,input().split()))
        print(sum(l1))
    except:
        break
import sys
for line in sys.stdin:
    a = list(map(int, line.split()))
    print(sum(a))

题目8: 对输入的字符串进行排序后输出
输入: 输入有两行,第一行n
第二行是n个空格隔开的字符串
5
c d a bb e
输出: 输出一行排序后的字符串,空格隔开,无结尾空格
a bb c d e

n=int(input())
l=input().split()
l.sort()
print(' '.join(l))#将序列中的元素以指定的字符(空格)连接生成一个新的字符串
import sys
n = input()
for line in sys.stdin:
    temp = line.split()
    print(" ".join(sorted(temp)))

题目9: 对输入的字符串进行排序后输出
输入: 多个测试用例,每个测试用例一行。
每行通过空格隔开,有n个字符,n<100
a c bb
f dddd
nowcoder
输出: 对于每组测试用例,输出一行排序过的字符串,每个字符串通过空格隔开
a bb c
dddd f
nowcoder

while True:
    try:
        l=input().split()
        l.sort()
        print(' '.join(l))
    except:
        break
import sys
for line in sys.stdin:
    temp = line.split()
    print(" ".join(sorted(temp)))

题目10: 对输入的字符串进行排序后输出
输入: 多个测试用例,每个测试用例一行。
每行通过,隔开,有n个字符,n<100
a,c,bb
f,dddd
nowcoder
输出: 对于每组测试用例,输出一行排序过的字符串,每个字符串通过空格隔开
a,bb,c
dddd,f
nowcoder

while True:
    try:
        l=input().split(',')#输入规范,首尾无空格
        l.sort()
        print(','.join(l))
    except:
        break
import sys
for line in sys.stdin:#line默认以空格隔开
    # strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
    temp = line.strip().split(',')
    print(','.join(sorted(temp)))
  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值