【Python/Pythonic Solutions】牛客网OJ在线编程常见输入输出练习场Python语言练习题解

关键信息

  1. sys.stdin为系统级标准输入,适用于系统级程序交互的情形,stdin返回一个可迭代对象,其每一项为一行字符串数据读取,包含句末的换行分隔符;
  2. strip()方法默认移除字符串两边的空格和换行,而split()方法默认利用空字符对字符串进行切片,其中空格、换行(\n)、制表符(\t)均为空字符,因此split()在默认分隔符的情形下隐式移除了字符串两边的空字符,也即包含strip()预处理,所以在本文方法中使用默认切片split()的情况下均不考虑strip(),而在显式利用其它字符,如split(',')时加入strip()预处理;

选读

  1. 文中代码多次创建变量ints,随后对其求和,其实多数情况下两步可化归为一步,但为了提升初次阅读的可读性,引入中间变量ints表示读取的测试整数集;
  2. 文中包含continuebreak语法的if-else语句省略了对必然出现的else的显示表达,可通过添加else提升可读性;
  3. 文中利用sum内置函数进行整数求和运算,提升前后多例代码的一致性;
  4. 文中对题目求解无关信息直接进行了忽略处理,但代码结构其实考虑到了相关信息的提取步骤,因此可以在代码微改的情况下提取相关信息,读者可自行尝试。

#A - A+B(1)

import sys
 
for line in sys.stdin:
    ints = [int(n) for n in line.split()]
    print(sum(ints))

#B - A+B(2)

import sys
 
for i, line in enumerate(sys.stdin):
    if i == 0:
        continue
     
    ints = [int(n) for n in line.split()]
    print(sum(ints))

#C - A+B(3)

import sys
 
for line in sys.stdin:
    ints = [int(n) for n in line.split()]
    if all([n == 0 for n in ints]):
        break
        
    print(sum(ints))

#D -A+B(4)

import sys
 
for line in sys.stdin:
    ints = [int(n) for i, n in enumerate(line.split()) if i > 0]
    if ints:
        print(sum(ints))
    else:
        break

#E - A+B(5)

import sys
 
for i, line in enumerate(sys.stdin):
    if i == 0:
        continue
     
    ints = [int(n) for i, n in enumerate(line.split()) if i > 0]
    print(sum(ints))

#F - A+B(6)

import sys
 
for line in sys.stdin:
    ints = [int(n) for i, n in enumerate(line.split()) if i > 0]
    print(sum(ints))

#G - A+B(7)

import sys

for line in sys.stdin:
    print(sum([int(n) for n in line.split()]))

#H - 字符串排序(1)

import sys

for i, line in enumerate(sys.stdin):
    if i % 2 == 0:
        continue
        
    print(' '.join(sorted([s for s in line.split()])))

#I - 字符串排序(2)

import sys

for line in sys.stdin:
    print(' '.join(sorted([s for s in line.split()])))

#J - 字符串排序(3)

import sys

for line in sys.stdin:
    print(','.join(sorted([s for s in line.strip().split(',')])))
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值