Python二级考试易错习题深度分析

本文章主要针对于Python二级考试的一些易错的,难以理解的题目和知识点进行详细的剖析解答,力求让读者完全的理解到每一道题的意义,非常适合初学python和初学编程语言的同学,同时,本篇文章也将作为一篇持续更新的帖子并欢迎读者在下方评论区积极参与讨论。以下是本篇文章的题目内容。

博主建议:对于每道题一定要做完之后得出自己的答案后再理解标准答案,然后再结合答案解析,这样的话能使得学习收益最大化。 

1.执行以下程序,输入"fish520",输出结果是()

w=input()
for x in w:
  if'0'<=x<='9':
    continue
  else:
    w.replace(x,'')
print(w)

答案:fish520

解析:本题重点在于对函数replace的用法考查,首先该代码是通过一个for循环遍历用户输入的值,对于其中所有的0-9的数字都采取了不做任何处理的方法,即使用continue当循环到了内容为0-9的时候,当次循环就结束,然后进行下一次的循环,对除了0-9之外一律用''代替;但是对于该题,因为replace函数是会产生返回值的,并不会直接改变w这个变量的内容,而是重新生成一个值,所以w值根本没有改变,要想其被改变,需要写成:w=w.replace(x,'')即可;

2.下面代码的输出结果是()

letter=['A','B','C','D','D','D']
for i in letter:
   if i=='D':
      letter.remove(i)
print(letter)

答案:['A','B','C','D']

解析:该题主要考查列表的性质和函数remove功能;首先for循环对列表letter进行遍历,当遍历到列表的第4个位置也就是第一个D的时候,remove将会将这个D给删除,注意:此时列表中的数据个数变成了5个,而列表中原本的在第五个位置的D就被自动填充到了第4个位置去了,

而当remove函数执行完毕后,for对该列表的第4次循环也就结束了,

开始进行第5次循环,而这个时候原本列表的第6个位置的元素就被填充到了现在的第5个位置来了,也就是该列表中的D,

此时,这个D就被删除掉了,至此,列表中再向后就已经没有元素可以被遍历了,整个循环结束,所以,最后的答案中还剩下了一个D,而这个D就是原本列表中的第5个位置的D。

3.以下程序的输出结果是()

img1=[12,34,56,78]
img2=[1,2,3,4]
def disp1(img):
    print(img)
img1=img2
img1.append([5,6])
disp1(img2)

答案:[1,2,3,4,[5,6]]

解析:该题主要考查的是列表的性质和append函数的功能;首先,我们可以确定disp1这个函数的功能就是打印为该函数输入的参数,而用户主要出问题的地方在img1=img2这里,python的列表的性质和我们正常理解的正好相反,img1=img2的作用是将等号右边的列表中的内容复制给等号左边,并且使得列表img1也对列表img2中的内容进行了引用(重点!!),所以最后img1中的内容就和img2的是一样了,或者说这两个列表实际上就是一个列表,因此,当为img1添加元素的时候,img2也同样被执行了相同的操作。

4.以下程序的输出结果是()

ss=[2,3,6,9,7,1]
for i in ss:
    print(max(ss),end=',')
    ss.remove(max(ss))

答案:9,7,6

解析:本体考查的还是列表的性质;该题和第2题类似,每当循环一次,max就会对列表ss进行一次判断并删除其中的最大值,第一次判断删除了第4个位置的9,然后后面的7,1对9空缺的位置进行向前填充且列表长度变为5,第二次循环删除7,列表长度变为4,第三次循环删除6,列表成都变成3,而此时已经循环了三次了,所以退出整个循环。最终得到的打印结果为9,7,6。

5.以下语句的执行结果是()

dd={'a':90,'b':87,'c':93}
print(max(dd),min(dd))

答案:c a

解析:本题主要考查的是字典的性质;大部分同学会直接给出93,87的答案,但实际上,在python中,是以键值对的大小来判断一个值的大小的,而在本题中'c'>'b'>'a',所以答案为c a。

6.按照要求写代码:

获得用户输入的一个数字,其中数字字符(0到9)用对应的中文字符"〇一二三四五六七八九"替换,输出替换之后的结果。

参考代码:

n=input()
s="〇一二三四五六七八九"
for c in "0123456789":
    n=n.replace(c,s[int(c):int(c)+1])
print(n)

解析:本体考查的依然是列表的性质和函数replace的用法;

首先,针对参考代码,只适用于输入字符为0-9的情况,如果输入的是0-9之外的内容,那么本代码将不会对其进行任何的处理;

int(c)的作用是对数字向下取整,这样做是为了防止用户错误的输入小数的情况,然后在字符串中使用s[int(c):int(c)+1]的意思是会取得字符串s中以c所在的位置开始到以c位置向后1个位置的所有数据,但不包括最后的那个数据,所以对于本体而言,s[int(c):int(c)+1]就能得到一个在字符串s中和循环次数相对应的位置的元素,那么这样做就能正好对上0-9的规律,

所以比如我输入6,那么当c=6的时候,s[int(c):int(c)+1]=六,而在输入的字符串n中存在’6‘这个字符,那么n中的‘6’就被成功的替换成了’六‘了。当然,如果输入的n是“a6”的话,最终该代码输出的结果就是“a六”。

本博客目前的python题库就先更新到这里啦,后续将会继续更新,敬请期待!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值