【python好题集】持续更新...

1、【多选】下面的代码,哪些是执行会报错的
A. int(33)   B. int(‘3.3’)   C. float(3h)   D. str([1,3])

答案解析:B选项 ’3.3’为字符串,不能转换成int;C选项 3h是错误表达,不能进行转换。故选BC

2、【多选】定义这样一个函数 - 下面说法正确的是

def e1():
 print('in e1')
 return False

A. 执行 False and e1() 屏幕会 显示 ‘in e1’
B. 执行 e1() and False 屏幕会 显示 ‘in e1’
C. 执行 True or e1() 屏幕会 显示 ‘in e1’
D. 执行 False or e1() 屏幕会 显示 ‘in e1’

答案解析:
本题考查and和or的用法。
and用法:一假都假,全真才是真
or用法:一真全真,全假才是假
A选项:考察and。False为假,一假全假,那么就不会继续判断了,所以走不到e1()
B选项:考察and。调用e1(),不管return什么,都不影响打印‘in e1’
C选项:考察or。True为真,一真全真,那么就不会继续判断了,所以走不到e1()
D选项:考察or。第一个为False,全假才是假,所以继续判断,调用e1(),不管return什么,都不影响打印‘in e1’
故正确的只有BD

3、【判断】下面的代码执行完后,变量b 的值仍然为 ‘a’

def f1(para):
    para=3
b = 'a'
f1(b)

答案解析:f1(b)相当于f1(‘a’),将‘a’传入函数中,’a‘=3,并没有对b的值进行更新,所以b的值不变
故答案:正确

4、【判断】下面的代码执行完后,变量b 的值仍然为 [1]

def f1(para):
    para[0]=3
b = [1]
f1(b)

答案解析:f1(b)相当于f1([1]),将[1]传入函数中,[1][0]=3表示对列表[1]索引为0的值更新为3,所以b的值变为3
故答案:错误

5、以下代码输出结果为

x = True
y = False
z = False

if not x or y:
    print(1)
elif not x or not y and z:
    print(2)
elif not x or y or not y and x:
    print(3)
else:
    print(4)

A、1   B、2  C、3  D、4

答案解析:
本题考察优先级:not>and>or。not x为False、not y为True
A:False or False==>False
B:not y and z 即为 True and False=>False,False or False=>False
C:not y and x 即为 True and True =>True ,False or False or True =>True
只有3对应的判断返回True,故选C

6、以下代码输出结果为

def greetPerson(*name):
    print('Hello', name)
  
greetPerson('Runoob', 'Google')

A、Hello Runoob
  Hello Google
B、Hello (‘Runoob’, ‘Google’)
C、Hello Runoob
D、错误!函数只能接收一个参数。

参考答案:
加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数,故B正确

7、以下代码输出结果为

result = lambda x: x * x
print(result(5))

A、lambda x: xx   B、10  C、25  D、55

答案解析:
lambda函数,也称匿名函数,匿名函数可以在程序中的任何地方使用,但是这个函数只能使用一次,即一次性的,lambda也称为丢弃函数
lambda 形参列表 : 函数返回值表达式语句
所以传入5,返回计算结果25

8、以下代码输出结果为

def Foo(x):
    if (x==1):
        return 1
    else:
        return x+Foo(x-1)

print(Foo(4))

A、10  B、24  C、7  D、1

答案解析:
第一次走else: 4+Foo(3)
第二次走else: 4+(3+Foo(2))
第三次走else: 4+3+(2+Foo(1))
第一次走if: 4+3+2+1=10
故A正确

9、以下代码输出结果为

x=2
def Foo():
    global x
    x=9
    print('x1=',x)
Foo()
print('x2=',x)

A、x1= 9 x2= 9  B、x1= 9 x2= 2

答案解析
正确选项:A。因为在函数中申明了x为全局变量,所以调用函数时,x的值由2变成了9,故输出均是9

10、求 1000 以内的完全数有哪些?(如果一个数恰好等于它的因子之和,则称该数为“完全数”)

例如: 6,它有约数 1、2、3、6,除去它本身 6 外,其余 3 个数相加为6

for i in range(1, 1000):
    sum = 0
    for j in range(1, i):
        if i % j == 0:
            sum += j
            if sum == i:
                print(i,end=' ')
==>6 24 28 496 

11、已知一个队列[1, 3, 6, 9, 7, 3, 4, 6] 按从小到大排序、按从大大小排序 、去除重复数字

list1 = [1, 3, 6, 9, 7, 3, 4, 6]
sorted(list1)
print(f'从小到大:{sorted(list1)}')
print(f'从大到小:{sorted(list1,reverse=True)}')
print(f'去除重复数字:{list(set(list1))}')

==>
从小到大:[1, 3, 3, 4, 6, 6, 7, 9]
从大到小:[9, 7, 6, 6, 4, 3, 3, 1]
去除重复数字:[1, 3, 4, 6, 7, 9]

12、请写一个函数ctoa,参数是1个字母,请返回该字母对应的ASCII码数字

def ctoa(letter):
    return ord(letter)

letter = 'a'
print(f'{letter}对应的ASCII码数字:{ctoa(letter)}')

13、请写一个函数is_symmetrical,参数是1个数字,请返回该数字是否对称

def is_symmetrical(digital1):
    str1 = str(digital1)
    if len(str1)%2==1:
        str1 = str1[:len(str1)//2]+str1[len(str1)//2+1:]

    left_str = str1[:len(str1)//2]
    right_str = str1[len(str1)//2:]
    if left_str==right_str[-1::-1]:
        print(True)
    else:
        print(False)

digital1 = 123421
is_symmetrical(digital1)
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值