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. 以下哪个语句创建字典? (多个正确的答案可能)

  1. a)d = {}

  2. b)d = {“john”:40,“peter”:45}

  3. c)d = {40:“john”,45:“peter”}

  4. 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. 为什么不鼓励以下划线开头的局部变量名?

  1. a)它们用于表示类的私有变量

  2. b)他们混淆了口译员

  3. c)它们用于表示全局变量

  4. d)他们放慢执行速度

回答:a)它们用于表示类的私有变量;由于Python没有私有变量的概念,因此前导下划线用于表示不能从类外部访问的变量。

 

50. 以下哪项是无效声明?

  1. a)abc = 1,000,000

  2. b)a b c = 1000 2000 3000

  3. c)a,b,c = 1000,2000,3000

  4. d)a_b_c = 1,000,000

回答:b)a b c = 1000 2000 3000;变量名称中不允许使用空格。

 

51. 以下哪项是无效声明?

  1. a)abc = 1,000,000

  2. b)a b c = 1000 2000 3000

  3. c)a,b,c = 1000,2000,3000

  4. 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]?

  1. a)错误

  2. b)没有

  3. c)25

  4. d)2

回答:c)25;索引-1对应于列表中的最后一个索引。

 

54. 要打开文件c:\ scores.txt进行编写,我们使用:

  1. a)outfile = open(“c:\scores.txt”,“r”)

  2. b)outfile = open(“c:\\scores.txt”,“w”)

  3. c)outfile = open(file = “c:\scores.txt”,“r”)

  4. 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部分?

  1. a)总是

  2. b)发生异常时

  3. c)没有异常发生时

  4. 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:

添加班主任微信 qiuzhiquanquanqqls000

加入微信群

 

技术交流群2:

添加班主任QQ 17246989941752856301

加入QQ群(240920680