前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >朋友去面试Python工程师,又带回来几道基础题,Python面试题No10

朋友去面试Python工程师,又带回来几道基础题,Python面试题No10

作者头像
梦想橡皮擦
发布2019-05-19 12:51:16
7250
发布2019-05-19 12:51:16
举报
文章被收录于专栏:Python3爬虫100例教程

第1题: print 调用 Python 中底层的什么方法?

print

print() 用 sys.stdout.write() 实现

代码语言:javascript
复制
    import sys
     
    print('hello')
    sys.stdout.write('hello')
    print('world')
    # 结果:
    # hello
    # helloworld

上述代码你应该可以总结一下。

  1. sys.stdout.write()结尾没有换行,而print()是自动换行的。
  2. write()只接收字符串格式的参数。
  3. print()能接收多个参数输出,write()只能接收一个参数输出。

input

Python3中的input() 用 sys.stdin.readline() 实现。

代码语言:javascript
复制
   import sys
   a = sys.stdin.readline()
   print(a, len(a))
   
   b = input()
   print(b, len(b))
    
    
   # 结果:
   # hello
   # hello
   #  6
   # hello
   # hello 5

第2题:range 和 xrange 的区别?

首先我们看看range:

  • range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。注意这里是生成一个序列。
  • xrange的用法与range相同,即xrange([start,] stop[, step])根据start与stop指定的范围以及step设定的步长,它所不同的是xrange并不是生成序列,而是作为一个生成器。即她的数据生成一个取出一个。

两者用法相同,不同的是 range 返回的结果是一个列表,而 xrange 的结果是一个生成器,前者是 直接开辟一块内存空间来保存列表,后者是边循环边使用,只有使用时才会开辟内存空间,所以相对来说,xrange比range性能优化很多,因为他不需要一下子开辟一块很大的内存,特别是数据量比较大的时候。

注意:

  1. xrange和range这两个基本是使用在循环的时候。
  2. 当需要输出一个列表的时候,就必须要使用range了。

第3题: 4G 内存怎么读取一个 5G 的数据?

方法一

可以通过生成器,分多次读取,每次读取数量相对少的数据(比如 500MB)进行处理,处理结束后在读取后面的 500MB 的数据。

代码语言:javascript
复制
def get_lines():  # 生成器
    with open('big.data', 'r') as f:
        while True:
            data = f.readlines(100)
            if data:
                yield data
            else:
                break

f = get_lines()  # 迭代器对象
print(next(f))
print(next(f))
print(next(f))

方法二

可以通过 linux 命令 split 切割成小文件,然后再对数据进行处理,此方法效率比较高。可以按照行数切割,可以按照文件大小切割。

第4题:在except中return后还会不会执行finally中的代码?怎么抛出自定义异常?介绍一下 except 的作用和用法?

会继续处理 finally 中的代码;用 raise 方法可以抛出自定义异常

  • except: #捕获所有异常
  • except: <异常名>: #捕获指定异常
  • except:<异常名 1, 异常名 2> : 捕获异常 1 或者异常 2
  • except:<异常名>,<数据>:捕获指定异常及其附加的数据
  • except:<异常名 1,异常名 2>:<数据>:捕获异常名 1 或者异常名 2,及附加的数据

第5题:在Python中输入某年某月某日,判断这一天是这一年的第几天?(可以用 Python 标准库)

方法一

代码语言:javascript
复制
year = int(input('请输入4位数字的年份:'))  #获取年份
month = int(input('请输入月份:'))  #获取月份
day = int(input('请输入是哪一天:'))  #获取日
if month == 1:
    count = day
elif month == 2:
    count = 31 + day
elif (month >= 3) and ((year % 4 == 0 and year % 100 != 0) or year % 400 == 0):
    if month == 3:
        count = 31 + 29 + day
    if month == 4:
        count = 31 + 29 + 31 + day
    if month == 5:
        count = 31 + 29 + 31 + 30 + day
    if month == 6:
        count = 31 + 29 + 31 + 30 + 31 + day
    if month == 7:
        count = 31 + 29 + 31 + 30 + 31 + 30 + day
    if month == 8:
        count = 31 + 29 + 31 + 30 + 31 + 30 + 31 + day
    if month == 9:
        count = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + day
    if month == 10:
        count = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + day
    if month == 11:
        count = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day
    if month == 12:
        count = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + day

else:
    if month == 3:
        count = 31 + 28 + day
    if month == 4:
        count = 31 + 28 + 31 + day
    if month == 5:
        count = 31 + 28 + 31 + 30 + day
    if month == 6:
        count = 31 + 28 + 31 + 30 + 31 + day
    if month == 7:
        count = 31 + 28 + 31 + 30 + 31 + 30 + day
    if month == 8:
        count = 31 + 28 + 31 + 30 + 31 + 30 + 31 + day
    if month == 9:
        count = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + day
    if month == 10:
        count = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + day
    if month == 11:
        count = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day
    if month == 12:
        count = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + day

print('第' + str(count) + '天')

互联网找到了几个解法 ### 方法二 ```py import datetime

y = int(input('请输入4位数字的年份:')) # 获取年份 m = int(input('请输入月份:')) # 获取月份 d = int(input('请输入是哪一天:')) # 获取“日”

targetDay = datetime.date(y, m, d) # 将输入的日期格式化成标准的日期 dayCount = targetDay - datetime.date(targetDay.year - 1, 12, 31) # 减去上一年最后一天 print('%s是%s年的第%s天。' % (targetDay, y, dayCount.days)) ```

方法三

代码语言:javascript
复制
import datetime
dtime = input("请输入求天数的日期(20191111):")
tnum = datetime.datetime.strptime(dtime,'%Y%m%d').strftime("%j")
print(dtime + "在一年中的天数是: " + tnum + "天。")

面试系列,本次写到10篇截止

对于python面试来说,基础占了很大的一个部分,你只需要夯实基础即可

剩下的多数为算法部分,我们半年后继续写完后续涉及算法的章节。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第1题: print 调用 Python 中底层的什么方法?
    • print
      • input
      • 第2题:range 和 xrange 的区别?
      • 第3题: 4G 内存怎么读取一个 5G 的数据?
        • 方法一
          • 方法二
          • 第4题:在except中return后还会不会执行finally中的代码?怎么抛出自定义异常?介绍一下 except 的作用和用法?
          • 第5题:在Python中输入某年某月某日,判断这一天是这一年的第几天?(可以用 Python 标准库)
            • 方法一
              • 方法三
              • 面试系列,本次写到10篇截止
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档