yznu:Python期末复习题

一. 单选题(共6题,30分)

1. (单选题, 5分)2.3e2 等于

  • A. 2.3乘以e的平方
  • B. 2.3除以100
  • C. 2.3乘以10的平方
  • D. 2.30

我的答案: C正确答案: C

5

2. (单选题, 5分)

c='hello'

d=c

c=100

print(type(d))

  • A. <class 'string'>
  • B. <class 'str'>
  • C. <class 'int'>
  • D. <class 'short int'>

我的答案: B正确答案: B

5

3. (单选题, 5分)

下列不属于Python语言的优点的是(   )。

  • A.

简单易学

  • B.

免费开源

  • C.

强制缩进

  • D.

丰富的库

我的答案: C正确答案: C

5

4. (单选题, 5分)

下面的选项中,正确的变量名是(   )。

  • A.

圆面积2

  • B.

for

  • C.

2sum

  • D.

it is

我的答案: A正确答案: A

5

5. (单选题, 5分)

执行Python语句“name,age=‘张三’,20“之后,下面说法正确的是(   )

  • A.

Name的值为“张三”,age的值为20,两个变量的类型不一定

  • B.

程序报错,因为两个变量没有定义,不能直接赋值

  • C.

定义两个变量,name是字符串类型,值为”张三“,age是整型,值为20

  • D.

不能同时给两变量赋值,程序报错

我的答案: C正确答案: C

5

6. (单选题, 5分)关于Python注释,以下选项中描述错误的是‪‪‪‪‪‫‪‪‪‪‪‪‫‪‪‪‪‪‪‪‪‪‪‪‫‪‪‪‪‪‪

  • A. Python注释语句不被解释器过滤掉,也不被执行
  • B. 注释可以辅助程序调试
  • C. 注释可用于标明作者和版权信息
  • D. 注释用于解释代码原理或者用途

我的答案: A正确答案: A

5

二. 填空题(共4题,20分)

7. (填空题, 5分)

高级语言翻译为机器机器语言的方式有两种:一种编译,一种是解释。Python属于(  )型语言。

我的答案:

5

(1) 解释 

正确答案:

(1) 解释

8. (填空题, 5分)(   )函数的功能是接收标准输入数据(即从键盘输入),返回String类型(字符串类型)。

我的答案:

5

(1) input 

正确答案:

(1) input()

9. (填空题, 5分)

(  )是指在程序运行过程中值可以发生改变的量。

我的答案:

5

(1) 变量 

正确答案:

(1) 变量

10. (填空题, 5分)

(   )函数的功能是将各种类型(字符串,整数、浮点数、列表、字典等)的数据输出到屏幕上。 

我的答案:

5

(1) print 

正确答案:

(1) print()

三. 其它(共2题,50分)

11. (其它, 25分)

大学第一学期必选课程及其学分如下:

Python

高等数学

大学英语

大学体育

军事理论

哲学

3学分

4学分

4学分

2学分

2学分

2学分

请计算并输出大学第一学期共修多少学分?输入每学分应缴纳的学费(整数,单位为元),计算并输出第一学期应缴纳多少学费?输出格式请参考输入输出示例。

输入

输入一个表示每学分应缴纳的学费的整数

输出

按示例格式分两行输出学分和学费

我的答案:

20

import numbers

l0=["python" ,"高等数学 ","大学英语 ","大学体育 ","军事理论 ","哲学"]

l1=[3,4,4,2,2,2]

a=int(input('请输入一学分需缴费?(元): '))

# l2=[i*a for i in l1]

print(l0)

for i in l1:

    print("  %d学分"%i,end="  ,  ")

print("\n")

sum=0

b=0

for i in l1:

    b=i*a

    sum+=b

    print("学费:%d元"%b,end=" , ")

print("\n总学费为:%.2f元"%sum)

正确答案:

python = 3

math = 4

english = 4

physical_education = 2

military_theory = 2

philosophy = 2

tuition_per_credit = int(input())

total_credits = (python + math + english + physical_education + military_theory + philosophy)

total_tuition = total_credits * tuition_per_credit

print(f'你本学期选修了{total_credits}个学分。')

print(f'你应缴纳的学费为{total_tuition}元。')

12. (其它, 25分)

在三行中依次分别输入当前的年、月、日的整数值,按要求分行依次完成如下输出。

1 输出年月日,空格分隔,格式:2020 09 16

2 输出年-月-日,连字符“-”分隔,格式:2020-09-16

3 输出年/月/日,斜线“/”分隔,格式:2020/09/16

4 输出月,日,年,逗号“,”分隔,格式:09,16,2020

5 用str.format()格式输出,格式:2020年09月16日

6 用字符串拼接方法输出,格式:2020年09月16日

year = input() # 输入当前年,2022
month = input() # 输入当前月,09
date = input() # 输入当前日,16

我的答案:

20

from calendar import month

year=input()

month=input()

day=input()

print(year,month,day)

print(year,month,day,sep='-')

print(year,month,day,sep='/')

print(month,day,year,sep=',')

print('{}年{}月{}日'.format(year,month,day))

print(year+'年'+month+'月'+day+'日')

正确答案:

year = input()                         # 输入当前年,2020

month = input()                        # 输入当前月,09

date = input()                         # 输入当前日,16

#=======================================================

# 补充你的代码

print(year, month, date)               # 年 月 日,2020 09 16

print(year, month, date, sep='-')      # 年-月-日,2020-09-16

print(year, month, date, sep='/')      # 年/月/日,2020/09/16

print(month, date, year, sep=',')       # 月,日,年,09,16,2020

print('{}年{}月{}日'.format(year,month,date))     # 2020年09月16日

print(year+'年'+month+'月'+date+'日')   # 2020年09月16日

一. 单选题(共6题,30分)

1. (单选题, 5分)下面关于time库引用不正确的是(    )。

  • A. from time import strftime
  • B. from * import time
  • C.

from time import *

  • D. import time

我的答案: B

2. (单选题, 5分)以下关于字符串.strip()方法功能说明正确的是(    )。

  • A. 掉字符串两侧指定字符
  • B. 按照指定字符分割字符串为数组
  • C. 替换字符串中特定字符
  • D. 连接两个字符串序列

我的答案: A

3. (单选题, 5分)#0037003900390032003200371664422374045val=pow(2,1000),请用一行代码返回val结果的长度值。

  • A. len(val)
  • B. len(pow(2,1000))
  • C. len(str(val))
  • D. 其他答案均不正确

我的答案: C

4. (单选题, 5分)

0037003900390032003200371664422521805下面代码的输出结果是(    )。

print(round(0.1 + 0.2,1) == 0.3)

  • A. True
  • B. 0
  • C. false
  • D. 1

我的答案: A

5. (单选题, 5分)表达式3+5%6*2//8的值是    )。

  • A. 6
  • B. 4
  • C. 7
  • D. 5

我的答案: B

6. (单选题, 5分)#0037003900390032003200371664422994407以下关于函数说法错误的是(    )。

  • A. 函数是一段具有特定功能的、可重用的语句组
  • B. 对函数的使用必须了解其内部实现原理
  • C. 函数通过函数名来调用
  • D. 函数可以看做是一段具有名字的子程序

我的答案: B

二. 填空题(共6题,30分)

7. (填空题, 5分)

#0037003900390032003200371664423171541

下面代码的输出结果是________。

list1 = [m+n for m in 'AB' for n in 'CD']

print(list1)

我的答案:

(1) ['AC', 'AD', 'BC', 'BD']

8. (填空题, 5分)二维列表ls=[[1,2,3], [4,5,6],[7,8,9]],使用________可获取其中元素5?

我的答案:

(1) ls[1][1]

9. (填空题, 5分)

写出下述程序的执行结果(    )。

s1 = [1, 3, '5', '7', True]

s1.append('False')

del s1[-2]

我的答案:

(1) [1, 3, '5', '7', 'False']

10. (填空题, 5分)

写出下述代码的执行结果________。

lst = [23, 56, 8, 900, 24]

print(llst.index(8))

我的答案:

(1) 2

11. (填空题, 5分)

请补充横线处的代码,让 Python 帮你随机选一个饮品吧!

import  random

random.seed(1)listC = ['加多宝','雪碧','可乐','勇闯天涯','椰子汁']

print(random. ________ (listC))

我的答案:

(1) choice

12. (填空题, 5分)

下面代码的输出结果是________

list1 = [i*2 for i in 'Python']

print(list1)

我的答案:

(1) ['PP', 'yy', 'tt', 'hh', 'oo', 'nn']

三. 简答题(共2题,40分)

13. (简答题, 20分)身份证号码验证:输入几个身份证号,首先判断输入的身份证号是否有效,如果有效,提取每个人的出生日期,性别,并获得其生肖,将每个人的出生日期、性别和生肖信息作为一个元组放入列表中输出。如果无效则输出身份证输入有误。

我的答案:

def check_id_data(n):

    if len(n) != 18:

        information1 = "身份证输入有误"

        tuple1 = (information1,)

        return tuple1

    n2 = n[:16]

    count = 0

    var = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]

    var_id = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']

    zod = ['猴', '鸡', '狗', '猪', '鼠', '牛', '虎', '兔', '龙', '蛇', '马', '羊']

    is_digit = (not (n2.isdigit())) or (not (n[17].isdigit()) and (n[17]) != "X")

    year = int(n[6:10])

    idx = year % 12

    for i in range(0, 17):

        count += int(n[i]) * var[i]

    count %= 11

    if (len(n) == 18) and (var_id[count]) == str(n[17]) and (not is_digit):

        birth = n[6:10]+"年"+n[10:12]+"月"+n[12:14]+"日"

        if int(n[16]) % 2 == 0:

            gender = "女"

        else:

            gender = "男"

        tuple1 = ("出生日期:"+birth, "性别:"+gender, "生肖:"+zod[idx])

        return tuple1

    else:

        information1 = "身份证输入有误"

        tuple1 = (information1,)

        return tuple1

def main():

    v = input("请输入2个18位身份证号,用空格分开:")

    [a, b] = map(str, v.split())

    information = []

    for x in [a, b]:

        x = check_id_data(x)

        information.append(x)

    print(information)

main()

14. (简答题, 20分)随机验证码生成。编写程序,在26个字母大小写和9个数字组成的列表中随机生成一个8位验证码。

我的答案:

import random

data = []

for i in range(65, 91):

    data.append(chr(i))

for j in range(97, 123):

    data.append(chr(j))

for k in range(48, 58):

    data.append(chr(k))

Verification_code_first = random.sample(data, 8)

Verification_code_final = "".join(Verification_code_first)

print(Verification_code_final)

一. 单选题(共6题,30分)

1. (单选题, 5分)

0037003900390032003200371666839365318

下面代码的输出结果是    )。

for i in range(1,6):

     if i/3 == 0:

         break

     else:

         print(i,end =",")

  • A.

1,2

  • B.

1,2,3,4,

  • C.

1,2,3,4,5,

  • D. 1,2,3,

我的答案: A

2. (单选题, 5分)

下面对Python语言的for循环描述正确的是(    )。

  • A. 遍历循环
  • B. 计数循环
  • C. 无限循环
  • D. 枚举循环

我的答案: A

3. (单选题, 5分)关于Python循环结构,以下选项中描述错误的是    )。

  • A.

Python通过for、while等保留字构建循环结构

  • B.

遍历循环中的遍历结构可以是字符串、文件、组合数据类型和range()函数等

  • C.

continue结束整个循环过程,不再判断循环的执行条件

  • D.

continue用来结束当前当次语句,但不跳出当前的循环体

我的答案: C

4. (单选题, 5分)

k=10000

while k>1:

    print(k)

    k=k/2

哪个选项给出了上述程序的输出次数?   

  • A. 1000
  • B. 15
  • C. 14
  • D. 13

我的答案: C

5. (单选题, 5分)下列Python保留字中,不用于表示分支结构的是    )。

  • A. if
  • B. elif
  • C. in
  • D. else

我的答案: C

6. (单选题, 5分)对于Python的分支结构,以下选项中描述错误的是    )。

  • A. Python中if-elif-else语句描述多分支结构
  • B. Python中if-else语句用来形成二分支结构
  • C. 分支结构可以向已经执行过的语句部分跳转
  • D. 分支结构使用if保留字

我的答案: C

二. 填空题(共6题,30分)

7. (填空题, 5分)

下列程序的运行结果是           。

scopeTem = {}

scopeTem['x'] = 3

scopeTem['y'] = 4

exec("mul=x*y", scopeTem)

print(scopeTem['mul'])

我的答案:

(1) 12

8. (填空题, 5分)

下列程序的运行结果是           

s1 = "ABCCCCBB"

counts = {}

for x in s1:

    counts[x] = counts.get(x,0) + 1

lst = list(counts.items())

lst.sort(key=lambda x:x[1], reverse=True)

print("{}出现{}次".format(lst[0][0], lst[0][1]))

我的答案:

(1) C出现4次

9. (填空题, 5分)

下列程序的运行结果是           

i = 1

while i + 1:

    if i > 4:

        i+=1

        break

    i += 1

    i += 1

print(i)

我的答案:

(1) 6

10. (填空题, 5分)

下列程序的运行结果是           

phoneBook = {'Alex':'6511-2002', 'Betty':'6512-7252',

'Dora':'6546-2708'}

phoneBook2 = phoneBook

phoneBook2['Betty'] = '1111-2222'

print(phoneBook['Betty'])

我的答案:

(1) 1111-2222

11. (填空题, 5分)

输出字典 fruits 中键值最大的键值对。请完善代码。

fruits = {"apple":10, "mango":12, "durian":20, "banana":5}

                     

                     

m = 'apple'

for key in fruits.keys():

#此段代码请完善

print('{}:{}'.format(m,fruits[m]))

我的答案:

(1) if fruits[key] == max(fruits.values()): m = key

12. (填空题, 5分)

请补充如下代码,将字典 d 中所有值以列表形式输出

d = {123:"123", 456:"456", 789:"789"}

print(           )

我的答案:

(1) list(d.values())

三. 简答题(共2题,40分)

13. (简答题, 20分)

你刚刚大学毕业,在北京找到了一份很好的工作,决定开始存钱买房。由于北京的房价很高,你要攒几年钱才能付得起房子的首付。

现根据以下假定来计算你需要多长时间才能攒够首付款:

1.将你想购买的房子的总价称为total_cost。

2.将首付款占总房价的比例称为portion_down_payment。为简单起见,假设portion_down_payment = 0.30(30%)。

3.将存款金额称为current_savings。你的存款从0元开始。

4.假设你的年薪是annual_salary,按12个月平均发放,单位是元。

5.假设你每个月都要拿出一定百分比的工资来存首付。称为portion_saved,此值为一个表示百分比的整数,例如50表示50%。

6.假定你每6个月加一次工资,每半年加薪比例semi_annual_raise是一个表示百分比的整数,例如7表示7%,即第7个月的月初涨一次工资,工资涨幅为7%,以后每过6个月再涨一次工资。

写一个程序来计算你需要多少个月才能攒够钱付定金。

我的答案:

total_cost = float(input()) 

annual_salary = float(input())

portion_saved = float(input()) 

semi_annual_raise = float(input()) 

portion_down_payment = 0.3

def down_payment():

     down_payment = total_cost * portion_down_payment

     return down_payment

down_payment = down_payment()

print('首付', down_payment)

current_savings = 0

number_of_months = 1

monthly_salary = annual_salary / 12

monthly_deposit = monthly_salary * portion_saved 

def print_current(number_of_months, monthly_salary, semi_annual_raise, monthly_deposit ):

    enough = True

    current_saving = 0

    while enough:

        current_saving = current_saving + monthly_deposit  # 发工资了,先给自己存一笔

        if current_saving >= down_payment:  

            print(f'需要{number_of_months}个月可以存够首付')

            enough = False

            return

        if number_of_months % 12 == 0:

            print("第{}个月月末有{:,.0f}元存款".format(number_of_months, current_saving))  # 每12个月输出一次存款,保留0位小数,使用千分符

        if number_of_months % 6 == 0:

            monthly_deposit = monthly_deposit * (1 + semi_annual_raise) 

        number_of_months = number_of_months + 1

print_current(number_of_months, monthly_salary, semi_annual_raise, monthly_deposit)

14. (简答题, 20分)

个人所得税计算器

2018年10月1日以前,个税免征额为3500元/月,调整后,个税免征额为5000元/月,7级超额累进个人所得税税率表如下:

所得税计算公式如下:

应纳税额 = (工资薪金所得 - 五险一金 - 个税免征额) × 适用税率 - 速算扣除数

请编写一个个人所税计算器,用户输入应发工资薪金所得、五险一金金额和个税免征额,输出应缴税款和实发工资,结果保留小数点后两位。当输入应发工资小于0或等于0时,输出“error”。

其中:实发工资 =  应发工资  -  五险一金   -  应缴税款

我的答案:

a=int(input("输入应发工资薪金所得:"))

b=int(input("输入五险一金金额:"))

c=int(input("输入个税免征额:"))

if a<=0:

    print("error")

else:

    if a<c:

        d=0

    else:

        if a-c<=3000:

            d=(a-b-c)*0.03

        elif 3000<a-c<=12000:

            d=(a-b-c)*0.1-210

        elif 12000<a-c<=25000:

            d=(a-b-c)*0.2-1410

        elif 25000<a-c<=35000:

            d=(a-b-c)*0.25-2660

        elif 35000<a-c<=55000:

            d=(a-b-c)*0.3-4410

        elif 55000<a-c<=80000:

            d=(a-b-c)*0.35-7160

        elif 80000<a-c:

            d=(a-b-c)*0.45-15160

    e=a-b-d

    print("应缴税款{:.2f}元,实发工资{:.2f}元。".format(d,e))

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值