41. python程序中文输出问题怎么解决?
用encode和decode,如:
import os.path
import xlrd,sys
Filename=’/home/tom/Desktop/1234.xls’
if not os.path.isfile(Filename):
raise NameError,”%s is not a valid filename”%Filename
bk=xlrd.open_workbook(Filename)
shxrange=range(bk.nsheets)
print shxrange
for x in shxrange:
p=bk.sheets()[x].name.encode(‘utf-8′)
print p.decode(‘utf-8′)
方法二:
在文件开头加上
reload(sys)
sys.setdefaultencoding(‘utf8′)
42. 阅读下面的代码,它的输出结果是什么?
class A(object):
def go(self):
print "go A go!"
def stop(self):
print "stop A stop!"
def pause(self):
raise Exception("Not Implemented")
class B(A):
def go(self):
super(B, self).go()
print "go B go!"
class C(A):
def go(self):
super(C, self).go()
print "go C go!"
def stop(self):
super(C, self).stop()
print "stop C stop!"
class D(B,C):
def go(self):
super(D, self).go()
print "go D go!"
def stop(self):
super(D, self).stop()
print "stop D stop!"
def pause(self):
print "wait D wait!"
class E(B,C): pass
a = A()
b = B()
c = C()
d = D()
e = E()
# 说明下列代码的输出结果
a.go()
b.go()
c.go()
d.go()
e.go()
a.stop()
b.stop()
c.stop()
d.stop()
e.stop()
a.pause()
b.pause()
c.pause()
d.pause()
e.pause()
答案,输出结果以注释的形式表示:
a.go()
# go A go!
b.go()
# go A go!
# go B go!
c.go()
# go A go!
# go C go!
d.go()
# go A go!
# go C go!
# go B go!
# go D go!
e.go()
# go A go!
# go C go!
# go B go!
a.stop()
# stop A stop!
b.stop()
# stop A stop!
c.stop()
# stop A stop!
# stop C stop!
d.stop()
# stop A stop!
# stop C stop!
# stop D stop!
e.stop()
# stop A stop!
a.pause()
# ... Exception: Not Implemented
b.pause()
# ... Exception: Not Implemented
c.pause()
# ... Exception: Not Implemented
d.pause()
# wait D wait!
e.pause()
# ...Exception: Not Implemented
43. 介绍一下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()方法来获取。
44. Python中, list, tuple, dict, set有什么区别, 主要应用在什么样的场景?
定义:
list:链表, 有序的项目, 通过索引进行查找, 使用方括号"[]";
tuple:元组, 元组将多样的对象集合到一起, 不能修改, 通过索引进行查找, 使用括号"()";
dict:字典, 字典是一组键(key)和值(value)的组合, 通过键(key)进行查找, 没有顺序, 使用大括号"{}";
set: 集合,无序, 元素只出现一次, 自动去重, 使用"set([])";
应用场景:
list, 简单的数据集合, 可以使用索引;
tuple, 把一些数据当做一个整体去使用, 不能修改;
dict, 使用键值和值进行关联的数据;
set, 数据只出现一次, 只关心数据是否出现, 不关心其位置;
代码:
mylist = [1, 2, 3, 4, 'Oh']
mytuple = (1, 2, 'Hello', (4, 5))
mydict = {'Wang' : 1, 'Hu' : 2, 'Liu' :4}
myset = set(['Wang', 'Hu', 'Liu', 4,'Wang'])
45. 写一个函数, 输入一个字符串, 返回倒序排列的结果: 如:string_reverse(‘abcdef’), 返回: ‘fedcba’ (请采用多种方法实现, 并对实现方法进行比较)。
解答: 5种方法的比较.
1. 简单的步长为-1, 即字符串的翻转;
2. 交换前后字母的位置;
3. 递归的方式, 每次输出一个字符;
4. 双端队列, 使用extendleft()函数;
5. 使用for循环, 从左至右输出;
代码:
string = 'abcdef'
def string_reverse1(string):
return string[::-1]
def string_reverse2(string):
t= list(string)
l= len(t)
for i,j in zip(range(l-1, 0, -1), range(l//2)):
t[i], t[j] = t[j], t[i]
return "".join(t)
def string_reverse3(string):
if len(string) <= 1:
return string
return string_reverse3(string[1:]) + string[0]
from collections import deque
def string_reverse4(string):
d= deque()
d.extendleft(string)
return ''.join(d)
def string_reverse5(string):
#return ''.join(string[len(string) - i] for i in range(1,len(string)+1))
return ''.join(string[i] for i in range(len(string)-1, -1, -1))
print(string_reverse1(string))
print(string_reverse2(string))
print(string_reverse3(string))
print(string_reverse4(string))
print(string_reverse5(string))
46. 以下哪个语句创建字典? (多个正确的答案可能)
-
a)d = {}
-
b)d = {“john”:40,“peter”:45}
-
c)d = {40:“john”,45:“peter”}
-
d)d =(40:“john”,45:“50”)
回答:b,c, d。通过指定键和值来创建字典。
47. 其中哪一个是floor division?
a) /
b)//
C) %
d)没有提到的
回答:b)//;例如,5.0/2 = 2.5,5.0//2 = 2
48. 标识符的最大可能长度是多少?
a)31个字符
b)63个字符
c)79个字符
d)以上都不是
回答:d)以上都不是;标识符可以是任意长度。
49. 为什么不鼓励以下划线开头的局部变量名?
-
a)它们用于表示类的私有变量
-
b)他们混淆了口译员
-
c)它们用于表示全局变量
-
d)他们放慢执行速度
回答:a)它们用于表示类的私有变量;由于Python没有私有变量的概念,因此前导下划线用于表示不能从类外部访问的变量。
50. 以下哪项是无效声明?
-
a)abc = 1,000,000
-
b)a b c = 1000 2000 3000
-
c)a,b,c = 1000,2000,3000
-
d)a_b_c = 1,000,000
回答:b)a b c = 1000 2000 3000;变量名称中不允许使用空格。
51. 以下哪项是无效声明?
-
a)abc = 1,000,000
-
b)a b c = 1000 2000 3000
-
c)a,b,c = 1000,2000,3000
-
d)a_b_c = 1,000,000
回答:b)a b c = 1000 2000 3000;变量名称中不允许使用空格。
52. 以下是什么输出?
try:
if '1' != 1:
raise "someError"
else:
print("someError has not occured")
except "someError":
print ("someError has occured")
a)发生了someError
b)没有发生someError
c)无效代码
d)以上都不是
回答:c)无效代码;新的异常类必须从BaseException继承。这里没有这样的继承。
53. 假设list1是[2,33,222,14,25],什么是list1 [-1]?
-
a)错误
-
b)没有
-
c)25
-
d)2
回答:c)25;索引-1对应于列表中的最后一个索引。
54. 要打开文件c:\ scores.txt进行编写,我们使用:
-
a)outfile = open(“c:\scores.txt”,“r”)
-
b)outfile = open(“c:\\scores.txt”,“w”)
-
c)outfile = open(file = “c:\scores.txt”,“r”)
-
d)outfile = open(file = “c:\\scores.txt”,“o”)
回答:b)该位置包含双斜杠(\$$,w用于指示正在写入文件。
55. 以下是什么输出?
f = None
for i in range (5):
with open("data.txt", "w") as f:
if i > 2:
break
print f.closed
a)True
b)False
c)None
d)Error
回答:a)True;与open文件一起使用时,WITH语句可确保在with块退出时关闭文件对象。
56. 何时执行try-except-else的else部分?
-
a)总是
-
b)发生异常时
-
c)没有异常发生时
-
d)当发生异常时至除了块
回答:c)没有异常发生时;当没有异常发生时,执行else部分。
57. a=1, b=2, 不用中间变量交换a和b的值.
两种形式: 加法或异或;代码:
a = 1
b = 2
a = a + b
b = a - b
a = a - b
print ('a = {0}, b = {1}'.format(a,b))
a = a ^ b
b = a ^ b
a = a ^ b
print ('a = {0}, b = {1}'.format(a, b))
58. 请写出打印结果
x = [0, 1]
i = 0
i, x[i] = 1, 2
print(x)
打印结果: [0, 2], python可以使用连续赋值, 从左至右.
g = lambda x, y=2, z : x + y**z
g(1, z=10) = ?
打印结果: 异常, 形参表末尾才可以有默认参数, z需要提供默认参数。
59. A、B两人分别在两座岛上。B生病了,A有B所需要的药。C有一艘小船和一个可以上锁的箱子。C愿意在A和B之间运东西,但东西只能放在箱子里。只要箱子没被上锁,C都会偷走箱子里的东西,不管箱子里有什么。如果A和B各自有一把锁和只能开自己那把锁的钥匙,A应该如何把东西安全递交给B?
答案:A把药放进箱子,用自己的锁把箱子锁上。B拿到箱子后,再在箱子上加一把自己的锁。箱子运回A后,A取下自己的锁。箱子再运到B手中时,B取下自己的锁,获得药物。
60. 有25匹马,速度都不同,但每匹马的速度都是定值。现在只有5条赛道,无法计时,即每赛一场最多只能知道5匹马的相对快慢。问最少赛几场可以找出25匹马中速度最快的前3名?
答案:每匹马都至少要有一次参赛的机会,所以25匹马分成5组,一开始的这5场比赛是免不了的。接下来要找冠军也很容易,每一组的冠军在一起赛一场就行了(第6场)。最后就是要找第2和第3名。我们按照第6场比赛中得到的名次依次把它们在前5场比赛中所在的组命名为A、B、C、D、E。即:A组的冠军是第6场的第1名,B组的冠军是第6场的第2名……每一组的5匹马按照他们已经赛出的成绩从快到慢编号:
A组:1,2,3,4,5
B组:1,2,3,4,5
C组:1,2,3,4,5
D组:1,2,3,4,5
E组:1,2,3,4,5
从现在所得到的信息,我们可以知道哪些马已经被排除在3名以外。只要已经能确定有3匹或3匹以上的马比这匹马快,那么它就已经被淘汰了。可以看到,只有上表中粗体蓝色的那5匹马才有可能为2、3名的。即:A组的2、3名;B组的1、2名,C组的第1名。取这5匹马进行第7场比赛,第7场比赛的前两名就是25匹马中的2、3名。故一共最少要赛7场。
——END——
技术交流群1:
添加班主任微信 qiuzhiquanquan 或 qqls000
加入微信群
技术交流群2:
添加班主任QQ 1724698994 或 1752856301
加入QQ群(240920680)
文章来源: 拼客学院服务号
- 还没有人评论,欢迎说说您的想法!