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

原文地址:https://www.cnblogs.com/Ironboy/p/8732415.html

时间: 2024-10-28 23:07:46

Python在线笔试琐碎的相关文章

2016校招之360在线笔试

刚刚参加了奇虎360的2016校招在线笔试,记录一下. 填空题:40题 编程题 :2题 考试时间:150分钟 博主投的是C/C++后台开发 填空题具体不记得了,只是涉及面很广,包括python,php,操作系统,C/C++,数学概率,数据结构与算法,数据库,正则表达式,设计模式等等 编程题: 1.找一个合适的人当村长,意思是:一个村子里选村长,这个村长必须满足以下条件: (1) 他除了自己,不认识村子里的其他人(默认每个人都认识他自己) (2) 村子里的其他人都认识他 村子里的每个人从1~N编号

2015年9月百度前端在线笔试

我的空间www.cumt.top 刚结束百度前端的在线笔试,感觉被虐了 一道系统题,三道编程题,js写的云里雾里 第一道系统题:写出资源管理器的数据结构,和功能接口 想了好一会儿,决定数据结构用json来写 { "root":[{ "name":"aaa", "hasChildren":1, "children":[{ "name":"asf"; "hasC

阿里客户端在线笔试

2015.4.2 刚刚进行了阿里的在线笔试,虽然是客户端的岗位,但是前面的题好像都没有和“我以为和客户端相关”的题,各种“当时我就懵逼了”.果然是阿里. 这样子也知道了自己的差距,我觉得考PAT靠谱多了,求今年六月份能去考PAT,fighting.(只能这样安慰自己了) 选择题: 1.<国王和天使>的游戏,每个人把自己的名字写在纸条上并且丢入盒子中,等所有人完成后,每个人再从盒子里抽一张小纸条,上面的人物就是自己的国王,自己就是ta的天使. 如果抽到自己就重抽,直到抽到别人为止.然后大家为小纸

阿里在线笔试总结

今年阿里校招首次使用线上笔试,20道单选(40mins)+3道附加题(80mins),一共2个小时. 20道单选包括由于网络协议.操作系统.C++.数学逻辑题.数据结构和算法几个方面的题,其中数学和逻辑题占的比重最大,其次是C++和数据结构.算法.时间还是很紧张的. 3道大题是:二叉树遍历.最长公共字串.java中sleep()和wait()区别: 对于单选题,有下面一些教训: 在线笔试虽然方便,但是为了减少作弊(肯定有,比如多个人一起帮忙做),时间肯定会紧张,这样没有时间查资料. 而且,我在这

2015阿里巴巴前端实习生在线笔试考后总结

写在前面 还是太年轻,第一次在线笔试有些紧张了 一.2015题目 我遇到的题目:6个选择其中3个多选,1个填空,6个大题.客服姐姐说题目是随机给的(因为给了一个时段考试,而不是统一时间点开考),不过题型应该是固定的. 单选:一个数组,两个引用,相互赋值,问输出 眩晕抗性-30% 单选:问一个return匿名函数的函数的执行结果,内部还有apply 眩晕抗性再-69% 单选:问字符串替换结果是什么,当然,又是套了几层,绕了几圈 眩晕抗性再-1%,嗯,做完这道给彻底绕晕了 多选:移动端,如果A按钮上

Python在线聊天软件(Tkinter)

1.python2.7下安装 apt-get install python-tk 主要功能是实现客户端与服务器端的双向通信,这个小东西用到的主要知识点: 1.Python Socket:2.Python Tkinter库. 当然也应该了解如下的基础知识:1.Python基本语法:2.Python基本语句:3.Python函数:4.Python模块:5.Python异常处理:6.Python面向对象: 7.Python线程等相关知识. 另外:我使用的是Python2.5这个版本,如果你使用的Pyt

阿里在线笔试算法工程师附加题

前几天参加了阿里的在线笔试,报的职位是算法工程师,笔试感觉难度适中,选择题包含数据结构.离散数学.小的智力问题还有一些读程序选结果的题目.其中数据结构和排列组合最多.当时比较慌乱,没做记录.只记下了三个附加题. 第一题很简单.要求实现一个方法,在两个排好序(升序)的整型数组中找到中位数.传入4个参数,分别是两个数组和他们的大小.这个题目既然简单就要写的高效一些.我用的归并排序的思想,将两个数组合并,在合并的过程中找到中位数.并对奇偶分情况讨论,注意偶数情况下有可能出现小数.代码如下: doubl

亚马逊在线笔试(2014/10/9)

亚马逊的在线笔试也是OJ题目,跟谷歌差不多.当然比较诧异的是,其实难度也跟谷歌差不多! 第一题: 巨麻烦的一道题目,大意是比较扑克牌序列,每个序列四张牌 规则一: 四张牌相同.自然数字大的胜出,比如3,3,3,3 < 6,6,6,6 规则二: 四张牌连续.当然序列最大的那个胜出.但是有个小trick,A在这里默认表最大牌,但是如果后接2,3,4,则A表最小牌,为了获得连续序列 比如A,2,3,4 < J,Q,K,A 规则三: 有三张相同.以每个序列相同牌较大的胜出. 比如3,3,3,2>

在线笔试系统 数据库设计

试卷模板:papertemaplate 岗位类型:positiontype 题库:question 答卷:sheet 应聘者答案(答卷明细表):ansersheet 用户表(包含面试吗.HR.应聘者):user 角色表:role (用来区分用户的类型) 试卷模板和题库的关系(试卷明细表): paperdetails 应聘者和岗位的关系:userpositiondertails 用户表(用户表包含3个角色)user 列名 含义 类型 属性 id 记录编号 INT 自增.主键.非空 loginnam