Python在线笔试琐碎

Posted ironboy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python在线笔试琐碎相关的知识,希望对你有一定的参考价值。

这篇博客记录一下在线笔试用Python写算法题时需要注意的一些事项。

处理输入

一些大公司的在线笔试似乎都承包给了第三方,那个平台下的在线写代码功能真是不能再渣。它并不像LeetCode以及其他OJ一样给定函数声明和函数头部,而是需要你自己去处理输入。

首先,Python下的输入基本都为字符串,在单行输入模式下,对于有混杂数字,字符的情况下,我们可以用raw_input()函数来接受处理。

# 输入:{1, 2, 3},23
s = raw_input()
  • 1
  • 2
  • 3

此时s保存就是整个输入,之后就需要手动的去获得里面的数据了。一般常用的处理字符串的操作(如splitintfloat)加上数组切片就可以了。

对于单行输入是纯数字的话,可以使用input()函数来处理。input和raw_input的关系后面提到。

# 输入:23.45
s = input()
type(s)  # float
  • 1
  • 2
  • 3
  • 4

如果是多行输入呢?比如题目要求多组同时输入,此时我们总不能写个循环使用raw_input函数吧。这时可以使用处理输入的sys.stdin。比如:

# 输入:12\n43\n...
import sys
for line in sys.stdin:  # 使用for处理多个输入
    print(line)
  • 1
  • 2
  • 3
  • 4
  • 5

这个时候,line是以字符串的形式保存的一行输入。对于混杂的情况依然需要字符串处理以及切片等操作。不过对于很多的情况,我们可以使用eval函数来处理。eval(str)的含义是将字符串str当成有效的表达式来求值并返回计算结果。比如:

# 例1,输入:{1, 2, 3, 4}
s = raw_input()  # s = ‘{1, 2, 3, 4}‘
d = eval(s)  # d = {1, 2, 3, 4}
type(d) # set类型
# 例2,输入:0xA
s = raw_input()  # s = ‘0xA‘
n = eval(s)  # n = 10
hn = hex(n)  # hn = ‘0xA‘
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

利用eval,可以很方便的将输入的字符串,并转换为对应的Python类型。另外,由于input函数其实就是调用了raw_input后又用eval函数处理了一下,所以,对于上面两个例子,也可以写成:

# 例1,输入:{1, 2, 3, 4}
d = input()  # s = {1, 2, 3, 4}
type(d) # set类型
# 例2,输入:0xA
n = input()  # n = 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

input & raw_input

它两的关系如下:

def input(prompt):
    return eval(raw_input(prompt))
  • 1
  • 2
  • 3

即raw_input接受返回的只是字符串,而input接受返回的是经过eval进行类型转换后的字符串值,当然,如果输入不能用eval函数处理的话,也会报错。

sys.stdin & input & raw_input

sys.stdin和后面两个都是获取输入的,不过后面两个一般只在处理单行输入时才使用。下面两个是等价的:

import sys
line = sys.stdin.readline()[:-1]  # sys.stdin会接受最后的`\n`,而raw_input不会
  • 1
  • 2
  • 3

等价于:

line = raw_input()
  • 1
  • 2

使用sys.stdin.readlines()时能够获取多行输入,在Windows下需要Ctrl+z来停止输入。

补充样例

题目来自hihoCoder上的A+B题。 
描述 
求两个整数A+B的和

输入 
输入包含多组数据。 
每组数据包含两个整数A(1 ≤ A ≤ 100)和B(1 ≤ B ≤ 100)。

输出 
对于每组数据输出A+B的和。

代码:

while True:
    try:
        (n, m) = (int(x) for x in raw_input().split())
        print(m + n)
    except EOFError:
        break





以上是关于Python在线笔试琐碎的主要内容,如果未能解决你的问题,请参考以下文章

去哪儿网2017校招在线笔试(前端工程师)编程题及JavaScript代码

JAVA滴滴-2021校招在线笔试-DE数据开发试卷-0913

JAVA滴滴-2021校招在线笔试-DE数据开发试卷-0913

IT在线笔试总结

阿里2015 在线笔试

在线笔试--恶心的输入问题