1 、下列代码运行结果是?
a = map ( lambda x: x** 3 , [ 1 , 2 , 3 ] )
list ( a)
[ 1 , 8 , 27 ]
2 、Which numbers are printed?( )
for i in range ( 2 ) :
print i
for i in range ( 4 , 6 ) :
print i
0 , 1 , 4 , 5 答:range ,左闭右开,range ( 2 ) 输出的是0 , 1 ,range ( 4 , 6 ) 表示在4 和6 之间左闭右开,是4 , 5
range ( ) 函数的语法如下:
range ( start, end[ , step] )
参数说明:
start: 计数从 start 开始。默认是从 0 开始。例如 range ( 5 ) 等价于 range ( 0 , 5 ) ;
end: 计数到 end 结束,但不包括 end。例如:range ( 0 , 5 ) 等于 [ 0 , 1 , 2 , 3 , 4 ] ,没有5 ;
step:步长,默认为1 。例如:range ( 0 , 5 ) 等价于 range ( 0 , 5 , 1 )
详情请参考:
http: // www. runoob. com/ python/ python- func- range . html
因此上述代码实际将输出:
0
1
4
5
for i in range ( 2 ) :
print i
for i in range ( 4 , 6 ) :
print I
打印的结果是()
0 , 1 , 4 , 5
下列哪种不是Python元组的定义方式?
( 1 )
( 1 , )
( 1 , 2 )
( 1 , 2 , ( 3 , 4 ) )
Python 中的 tuple 结构为 “不可变序列”,用小括号表示。为了区别数学中表示优先级的小括号,当 tuple 中只含一个元素时,需要在元素后加上逗号。
>> > print ( type ( ( 1 , ) ) )
< class 'tuple' >
>> > print ( type ( ( 1 ) ) )
< class 'int' >
What gets printed?( )
print r"\nwoow"
the text like exactly like this: \nwoow 前导标识符 r 不会被输出,只起标记作用,r代表不被转义
Python 中字符串的前导 r 代表原始字符串标识符,该字符串中的特殊符号不会被转义,适用于正则表达式中繁杂的特殊符号表示。
最典型的例子,如要输出字符串 \n,由于反斜杠的转义,因此一般的输出语句为:
print "\\n"
这里的 \\ 将被转义为 \ 。而采用原始字符串输出时,则不会对字符串进行转义:
print r"\n"
因此本题答案为 C,输出 \nwoow 。注意前导标识符 r 不会被输出,只起标记作用。
以下声明错误的是:D
A、dic = { }
B、dic = { 100 : 200 }
C、dic = { ( 1 , 2 , 3 ) : 'test' }
D、dic = { [ 1 , 2 , 3 ] : 'test' }
字典的键值必须是不可变类型,如数字,字符串,元组,而列表是可变类型。
可变( mutable) 对象类型 :list 、dict 、set 、bytearray 、user- defined classes ( unless specifically made immutable)
不可变( immutable) 对象类型: int 、float 、decimal、complex 、bool 、str 、tuple 、range 、frozenset 、bytes
对于以下代码,描述正确的是:
list = [ '1' , '2' , '3' , '4' , '5' ]
print list [ 10 : ]
A、导致 IndexError
B、输出[ '1' , '2' , '3' , '4' , '5' ]
C、编译错误
D、输出[ ]
切片操作不会引起下标越界异常
索引会报错,如list [10 ], list index out of range ,而切片不会,只会给空列表如list [ 10 :11 ] 结果是空列表
下列程序运行结果为:
a= [ 1 , 2 , 3 , 4 , 5 ]
sums = sum ( map ( lambda x: x + 3 , a[ 1 : : 3 ] ) )
print ( sums)
13
a= [ 1 , 2 , 3 , 4 , 5 ]
sums = sum ( map ( lambda x: x + 3 , a[ 1 : : 3 ] ) )
'''
a[1::3]意思是切片取值
a[1]=2,
: 代表取值到列表结尾,3为步长 ,取值结果为[2,5]
lambda 匿名函数 返回x+3,则为[5,8],再求合13
'''
print ( sums)
a[ 1 : : 3 ] 的意思是,从下标1 开始步长为3 的元素,在这道题里也就是2 、5 ;
两个冒号中间的数字代表从开始到小于该下标,留空则直到结尾,比如a[ 0 : 4 : 1 ] 则是从下标0 开始到下标4 之间步长为1 的元素。
这是Python里面的切片步长写法,它的原始形式应该是这样的:[ start: end : step]
表示“从开始索引位置的那个值计算,经过多少步长到结束索引位置”,有时候end会被省略。
所以这里就表示从索引为1 的(a= [ 1 , 2 , 3 , 4 , 5 ] )数字,就是这里的2 (因为索引都是从0 开始计算)开始计算 三步,下一个就是5 。
有如下类定义,下列描述错误的是? D
class A ( object ) :
pass
class B ( A) :
pass
b = B( )
A、isinstance ( b, A) == True
B、isinstance ( b, object ) == True
C、issubclass ( B, A) == True
D、issubclass ( b, B) == True
abc isinstance (object ,classinfo),用于判断object 是否是classinfo的一个实例,或者object 是否是classinfo类的子类的一个实例,如果是返回True . issubclass (class ,classinfo),用于判断class 是否是classinfo类的子类,如果是返回True .
新式类:class 类(object 基类)
继承类:class 子类(父类1 [ , 父类2 ,父类3 ] )
class A ( object ) :
pass
class B ( A) :
pass
b = B( )
已知print_func. py的代码如下:
print ( 'Hello World!' )
print ( '__name__ value: ' , __name__)
def main ( ) :
print ( 'This message is from main function' )
if __name__ == '__main__' :
main( )
print_module. py的代码如下:
import print_func
print ( "Done!" )
运行print_module. py程序,结果是:
Hello World!
__name__ value: print_func
Done!
如果是直接执行print_func文件,则__name__的值为__main__;
如果是以导入模块的形式执行print_func文件,则__name__的值为该文件名print_func。
__name__的目的就是如果是以导入模块的形式执行文件,不会执行if __name__ == '__main__' 下面的语句。