【Python环境】Python面试题汇总(二)

题目:031| 介绍一下except的用法和作用

try/except:          捕捉由PYTHON自身或写程序过程中引发的异常并恢复
except:              捕捉所有其他异常
except name:         只捕捉特定的异常
except name, value:  捕捉异常及格外的数据(实例)
except (name1,name2) 捕捉列出来的异常
except (name1,name2),value: 捕捉任何列出的异常,并取得额外数据
else:                如果没有引发异常就运行
finally:             总是会运行此处代码

题目:032| 如何用Python来进行查询和替换一个文本字符串

>>> words = 'Python is a very funny language!'
>>> words.find('Python')             # 返回的为0或正数时,为其索引号
0
>>> words.find('is')
7
>>> words.find('dafa')               # 返回-1表示查找失败
-1
>>> words.replace('Python', 'Perl')  # replace()替换
'Perl is a very funny language!'

题目:033| Python如何copy一个文件

import shutil
shutil.copyfile('a.py', 'copy_a.py')

题目:034| Python判断当前用户是否是root

import os
if os.getuid() != 0:    # root账号的uid=0
    print os.getuid()
    print 'Should run as root account'
else:
    print 'Hello, Root!'

题目:035| 用Python写一个for循环的例子

for循环可以遍历序列(列表,字符串,元祖),range()及迭代对象,如xrange()
names = ['Alice', 'Betty', 'Fred', 'Tom']
for index, name in enumerate(names):
	print 'index:',index,'=>', name

# 输出结果	
index: 0 => Alice
index: 1 => Betty
index: 2 => Fred
index: 3 => Tom

题目:036| 介绍一下Python中webbrowser的用法

webbrowser模块提供了一个高级接口来显示基于Web的文档,大部分情况下只需要简单的调用open()方法。

webbrowser定义了如下的异常:exception webbrowser.Error, 当浏览器控件发生错误是会抛出这个异常

webbrowser有以下方法:

webbrowser.open(url[, new=0[, autoraise=1]])

这个方法是在默认的浏览器中显示url, 如果new = 0, 那么url会在同一个浏览器窗口下打开,如果new = 1, 
会打开一个新的窗口,如果new = 2, 会打开一个新的tab, 如果autoraise = true, 窗口会自动增长。

webbrowser.open_new(url)
在默认浏览器中打开一个新的窗口来显示url, 否则,在仅有的浏览器窗口中打开url

webbrowser.open_new_tab(url)
在默认浏览器中当开一个新的tab来显示url, 否则跟open_new()一样

webbrowser.get([name]) 根据name返回一个浏览器对象,如果name为空,则返回默认的浏览器

webbrowser.register(name, construtor[, instance])
注册一个名字为name的浏览器,如果这个浏览器类型被注册就可以用get()方法来获取。

题目:037| 默写尽可能多的str对象的方法

#方法                                   #描述  
-------------------------------------------------------------------------------------------------  
S.capitalize()                          #返回首字母大写的字符串的副本  
S.center(width[,fillchar])              #返回一个长度为max(len(S),width),S居中,两侧fillchar填充  
S.count(sub[,start[,end]])              #计算子字符串sub的出现次数,可将搜索范围限制为S[start:end]  
S.decode([encoding[,error]])            #返回使用给定编码方式的字符串的解码版本,由error指定错误处理方式  
S.endswith(suffix[start[,end]])         #检查S是否以suffix结尾,可给定[start:end]来选择匹配的范围  
S.expandtabs([tabsize])                 #返回字符串的副本,其中tab字符会使用空格进行扩展,可选择tabsize  
S.find(sun[,start[,end]])               #返回子字符串sub的第一个索引,不存在则为-1,可选择搜索范围  
S.index(sub[,start[,end]])              #返回子字符串sub的第一个索引,不存在则引发ValueError异常.  
S.isalnum()                             #检查字符串是否由字母或数字字符组成  
S.isalpha()                             #检查字符串是否由字母字符组成  
S.isdigit()                             #检查字符串是否由数字字符组成  
S.islower()                             #检查字符串是否由小写字母组成  
S.isspace()                             #检查字符串是否由空格组成  
S.istitle()                             #检查字符串时候首字母大写  
S.isupper()                             #检查字符串是否由大写字母组成  
S.join(sequence)                        #返回其中sequence的字符串元素由S连接的字符串  
S.ljust(width[,fillchar])               #返回S副本左对齐的字符串,长度max(len(S),W),右侧fillchar填充  
S.lower()                               #返回所有字符串都为小写的副本  
S.lstrip([char])                        #向左移除所有char,默认移除(空格,tab,\n)  
S.partition(seq)                        #在字符串中搜索seq并返回  
S.replace(old,new[,max])                #将new替换olad,最多可替换max次  
S.rfind(sub[,start[,end]])              #返回sub所在的最后一个索引,不存在则为-1,可定搜索范围S[start:end]  
S.rindex(sub[,start[,end]])             #返回sub所在的最后一个索引,不存在则会引发ValueError异常。  
S.rjust(width[,fillchar])               #返回S副本右对齐的字符串,长度max(len(S),W),左侧fillchar填充  
S.rpartition(seq)                       #同Partition,但从右侧开始查找  
S.rstip([char])                         #向右移除所有char,默认移除(空格,tab,\n)  
S.rsplit(sep[,maxsplit])                #同split,但是使用maxsplit时是从右往左进行计数  
S.split(sep[,maxsplit])                 #使用sep做为分割符,可使用maxsplit指定最大切分数  
S.zfill(width)                          #在S的左侧以0填充width个字符  
S.upper()                               #返回S的副本,所有字符大写  
S.splitlines([keepends])                #返回S中所有行的列表,可选择是否包括换行符  
S.startswith(prefix[,start[,end]])      #检查S是否以prefix开始,可用[start,end]来定义范围  
S.strip([chars])                        #移除所有字符串中含chars的字符,默认移除(空格,tab,\n)  
S.swapcase()                            #返回S的副本,所有大小写交换  
S.title()                               #返回S的副本,所有单词以大写字母开头  
S.translate(table[,deletechars])        #返回S的副本,所有字符都使用table进行的转换,可选择删除出现在deletechars中的所有字符  

题目:038| 现在有一个dict对象adict,里面包含了一百万个元素,查找其中的某个元素的平均需要多少次比较

O(1)  哈希字典,快速查找,键值映射,键唯一!

题目:039| 有一个list对象alist,里面的所有元素都是字符串,编写一个函数对它实现一个大小写无关的排序

words = ['This','is','a','dog','!']
words.sort(key=lambda x:x.lower())
print words
#输出结果
>>> 
['!', 'a', 'dog', 'is', 'This']

题目:040| 有一个排好序地list对象alist,查找其中是否有某元素a

alist = ['a','s','d','f']

try:
    alist.index('a')
    print 'Find it.'
except ValueError:
    print 'Not Found.'

题目:041| 请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本

num = input('Enter number: ')

if num > 100:
    print 'The number is over 100'
elif 0 < num <= 100:
    print 'The number is between 0~100'
elif num < 0:
    print 'The number is negative.'
else:
    print 'Not a number'

题目:042| 打乱一个排好序的list对象alist

# random模块中的shuffle(洗牌函数)
import random
alist = [1, 2, 3, 4]
random.shuffle(alist)   
print alist

题目:043| 有二维的list对象alist,假定其中的所有元素都具有相同的长度,写一段程序根据元素的第二个元素排序

def sort_lists(lists, sord, idx):
    if sord == 'desc':
        lists.sort(key=lambda x:x[idx], reverse=True)
    else:
        lists.sort(key=lambda x:x[idx])
    return lists
lists = [['cd','ab'],['ef','ac']]
sort_lists(lists,'desc',1)
print lists

# 输出结果
>>> 
[['ef', 'ac'], ['cd', 'ab']]

题目:044| inspect模块有什么用

inspect模块提供了一系列函数用于帮助使用自省。

检查对象类型
is{module|class|function|method|builtin}(obj): 检查对象是否为模块、类、函数、方法、内建函数或方法。
isroutine(obj): 用于检查对象是否为函数、方法、内建函数或方法等等可调用类型。

获取对象信息
getmembers(object[, predicate]): 这个方法是dir()的扩展版,它会将dir()找到的名字对应的属性一并返回。
getmodule(object): 它返回object的定义所在的模块对象。
get{file|sourcefile}(object): 获取object的定义所在的模块的文件名|源代码文件名(如果没有则返回None)。
get{source|sourcelines}(object): 获取object的定义的源代码,以字符串|字符串列表返回。
getargspec(func): 仅用于方法,获取方法声明的参数,返回元组,分别是(普通参数名的列表, *参数名, **参数名, 默认值
元组)。 

题目:045| Python处理命令行参数示例代码

# 最简单、最原始的方法就是手动解析了
import sys
for arg in sys.argv[1:]:
    print(arg)

题目:045| 介绍一下Python getopt模块

# getopt模块是原来的命令行选项解析器,支持UNIX函数getopt()建立的约定。
# 它会解析一个参数序列,如sys.argv,并返回一个元祖序列和一个非选项参数序列。
# 目前支持的选项语法包括短格式和长格式选项:-a, -bval, -b val, --noarg, --witharg=val, --witharg val。
# 如果只是简单的命令行解析,getopt还是不错的选择。一个例子如下

import sys
import getopt

try:
    options, remainder = getopt.getopt(sys.argv[1:], 'o:v', ['output=', 'verbose', 'version=',])
except getopt.GetoptError as err:
    print 'ERROR:', err
    sys.exit(1)
总结下getopt的特点:1.  getopt是从前到后解析 2.  getopt不检查额外参数的合法性,需要自行检查           
                   3.  短命令行和长命令行是分开解析的</span>

原文发布于微信公众号 - 数据科学与人工智能(DS_AI_shujuren)

原文发表时间:2015-09-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏magicsoar

C语言和go语言之间的交互 - C语言中使用go语言,使用的go语言又使用了c语言

一、go语言中使用C语言 go代码中使用C代码,在go语言的函数块中,以注释的方式写入C代码,然后紧跟import “C” 即可在go代码中使用C函数 ? 代码...

391100
来自专栏HTML5学堂

JavaScript 运行机制之执行顺序详解

1、代码块 定义:JavaScript中的代码块是指由<script>标签分割的代码段。 示例: <script> 代码块一 </script> <scr...

319110
来自专栏xiaoxi666的专栏

C++数据个数未知情况下的输入方法

我们经常需要输入一串数,而数据个数未知。这时候就不能以数据个数作为输入是否结束的判断标准了。

17910
来自专栏乐百川的学习频道

Python学习笔记 输入输出

str和repr内置函数 在介绍Python的输入输出之前,我们先来介绍两个内置函数,str()和repr(),它们都用来输出对象的字符串形式。不过它们之间有一...

37780
来自专栏nummy

itertools模块详解

tee()创建的迭代器共享其输入迭代器,所以一旦创建了新迭代器,就不应该再使用远迭代器。

15530
来自专栏机器学习AI算法工程

Python一些基础面试题目总结

1 Python是如何进行内存管理的? 答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制 一、对象的引用计数机制 pytho...

41060
来自专栏逆向技术

C++反汇编第二讲,不同作用域下的构造和析构的识别

               C++反汇编第二讲,不同作用域下的构造和析构的识别 目录大纲:   1.全局(静态)对象的识别,(全局静态全局一样的,都是编译期间...

212100
来自专栏河湾欢儿的专栏

第一节预解释、作用域、this原理

11320
来自专栏web

javascript -- 变量

10210
来自专栏java学习

Java基础总结大全(1)

一、基础知识: 1、JVM、JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性。 ...

455110

扫码关注云+社区

领取腾讯云代金券