python练习题(一)——A+B Problem


前言

好久没有更新博客了,最近一直在忙于工作,空闲之余刷了几道题,简单记录一下,内容是某个大厂的内部练习题,我这里是先从简单难度的开始的,主要是为了培养自己的编程思维和编程能力,每天一道,避免手生。


一、A+B Problem

题目详情:

Calculate  A+B,and  give  me  the  answer!

解答要求:

时间限制:1000ms  ,内存限制:100MB

输入:

Input two intergers  A  and  B , process  to  the end of file.(watch the Sample  Input)

输出:

For each case, output A +B in one line.(Watch the sample  output)

样例:

输入样例1:

1  1

输出样例1:

2

输入样例2:

1  1

2  2

4  4

输出样例2:

2

4

8

二、问题分析

这里有一句需要说明,在每个大厂里面,所有的程序提交都必须是函数,所以这里建议平时写程序的时候随手定义函数,在函数内部来写。

本题是某个大厂的内部练习题,本题可以说是非常简单了,但是这里面需要注意一个问题,题目中有一句话我标红了,process  to  the end of file,这句话很重要,如果没有理解这句话可能这个题难以获得满分。这句话是说:程序执行到文件末尾,所以这是一个while   True的死循环,直到把每一行都读取之后,才可以跳出循环,这里面还会有一个try…except语句。结合代码来说明

三、详细代码

def func():
    while True:
        try:
            a,b=map(int,input().strip().split())
            print(a+b)
        except EOFError:
            break
if __name__=='__main__':
    func()

输出结果:

1 2
3
4 5
9

四、代码说明

1、map函数

map是python内置函数,会根据提供的函数对指定的序列做映射,其函数格式是:

map(function,iterable,...)

可以看到关于此函数的说明:

"""
map(func, *iterables) --> map object

Make an iterator that computes the function using arguments from
each of the iterables.  Stops when the shortest iterable is exhausted.
"""

第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合

将第一个函数,分别作用在可迭代对象上,并输出一个新的list。在本题中,input()输入的是文本格式的数字,所以这里采用map(int,input()),就是将int分别作用在输入的文本数字上,目的是将其转化为数字。那么这里有一个问题:是否可以直接使用int作用在整个input上呢???

def func():
    while True:
        try:
            a,b=int(input().strip().split())
            print(a+b)
        except EOFError:
            break
if __name__=='__main__':
    func()

这种方式可行吗???

答案是否定的。

input().split()得到的是一个列表,而int是作用在字符串上的,而不是作用在列表上的

>> input().strip().split()
1 1
Out[3]: ['1', '1']

可以看到input().split()得到的是一个列表,所以,这里建议还是使用map函数

2、map函数的一些示例

del square(x):
    return x ** 2
 
map(square,[1,2,3,4,5])
 
# 结果如下:
[1,4,9,16,25]

通过使用lambda匿名函数的方法使用map()函数:

map(lambda x, y: x+y,[1,3,5,7,9],[2,4,6,8,10])
 
# 结果如下:
[3,7,11,15,19]

当不传入function时,map()就等同于zip(),将多个列表相同位置的元素归并到一个元组:

map(None,[2,4,6],[3,2,1])
 
# 结果如下
[(2,3),(4,2),(6,1)]

3、EOFError函数

try …… except  EOFError,就是用来处理题目中标红的要求的,程序要还行到文件末尾,EOFError的作用就是执行到文件末尾然后抛出异常,try……except捕捉到异常然后执行break语句终止循环(详细可参考前面的捕捉异常的文章)。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值