人工智能应用期末复习题(编程)

样题1:

file

参考答案:

a = eval(input('请输入PM2.5值:'))

if a > 250:
    quality = '严重污染'
elif a > 150:
    quality = '重度污染'
elif a > 115:
    quality = '中度污染'
elif a > 75:
    quality = '轻度污染'
elif a > 35:
    quality = '良'
else:
    quality = '优'

print('空气质量:', quality)

样题2:

file

参考答案:

scores = [810986, 725227, 871582, 805376, 805376, 739747]

a = eval(input('请输入一个整数:'))

for b in scores:
    if b < a:
        print('跑分结果:', str(b))

样题3:

file

参考答案:

houses = {
    'count': 6,
    'prices': [
        {'name': '顶层小复式', 'square': 45, 'pay': 16},
        {'name': '底层一居室', 'square': 56, 'pay': 8},
        {'name': '中层两居室', 'square': 72, 'pay': 10.5},
        {'name': '中层一居室', 'square': 58, 'pay': 11},
        {'name': '高层一居室', 'square': 62, 'pay': 13},
        {'name': '高层小复式', 'square': 45, 'pay': 15},
    ]
}

a = input('请输入房型:')

for b in houses['prices']:
    if b['name'] == a:
        pay = b['square'] * b['pay'] * 0.3
        pay = round(pay, 1)
        print('房型:', b['name'])
        print('首付:', str(pay), '万元')

样题4:

某文具批发店某款签字笔每只零售价是2.7元,现推出下表批发打折促销活动:

一次性购买数量 折扣
50只以下 无折扣
50只以上(含50只) 九五折
150只以上(含150只) 八折
300只以上(含300只) 八折并返回150元给客户

请编写程序,根据购买数量按上表折扣计算实付金额,要求如下:

  1. 程序运行时,从键盘输入购买数量
  2. 输出时能根据购买数量折扣计算实付金额

输入、输出结果格式:
请输入购买数量(只):164
实付金额:354.24元

参考答案:

a = int(input('请输入购买数量(只):'))

if a >= 300:
    pay = a * 2.7 * 0.8 - 150
elif a >= 150:
    pay = a * 2.7 * 0.8
elif a >= 50:
    pay = a * 2.7 * 0.95
else:
    pay = a * 2.7

print('实付金额:', str(pay))

样题5:

姓名 语文成绩
张小燕 91
马尚 84
张新胜 74
马成功 94
陈功 64
马徕西 55
陈婉倩 94

将上表数据存放到列表list1中,即:

List1=[91,84,74,94,64,55,94]

请编写程序,先输入一个语文成绩chengji,然后用循环对列表进行遍历,输出所有大于chengji的数值
输入、输出结果格式:
请输入一个语文成绩:80
语文成绩大于80分的有:
语文成绩:91
语文成绩:84
语文成绩:94
语文成绩:94

参考答案:

List1 = [91, 84, 74, 94, 64, 55, 94]

a = int(input('请输入一个语文成绩:'))

print('语文成绩大于{}分的有:'.format(a))
for b in List1:
    if b > a:
        print('语文成绩:', b)

样题6:

下表给出了部分同学的语文成绩:

姓名 语文成绩
张小燕 91
马尚 84
张新胜 74
马成功 94
陈功 64
马徕西 55
陈婉倩 94
Result = {'stud_nums':7,
    'stud_chengji':[
        {'姓名': '张小燕', 'fenshu': 91},
        {'姓名': '马尚', 'fenshu': 84},
        {'姓名': '张新胜', 'fenshu': 74},
        {'姓名': '马成功', 'fenshu': 94},
        {'姓名': '陈功', 'fenshu': 64},
        {'姓名': '马徕西', 'fenshu': 55},
        {'姓名': '陈婉倩', 'fenshu': 94},
    ]
}

请编写一个程序,输入一个语文成绩fenshu,然后从上述字典列表嵌套中输出所有大于该fenshu的同学名字和语文成绩

输入、输出结果格式:
请输入一个语文成绩:80
语文成绩大于80分的同学有4名,分别是:
张小燕:91
马尚:84
马成功:94
陈婉倩:94

参考答案:

Result = {'stud_nums': 7,
          'stud_chengji': [
              {'姓名': '张小燕', 'fenshu': 91},
              {'姓名': '马尚', 'fenshu': 84},
              {'姓名': '张新胜', 'fenshu': 74},
              {'姓名': '马成功', 'fenshu': 94},
              {'姓名': '陈功', 'fenshu': 64},
              {'姓名': '马徕西', 'fenshu': 55},
              {'姓名': '陈婉倩', 'fenshu': 94},
          ]
          }

a = int(input('请输入一个语文成绩:'))

list_1 = []
c = 0
for b in Result['stud_chengji']:
    if b['fenshu'] > a:
        print(b['姓名'], ':', b['fenshu'])
        c += 1
print('语文成绩大于{}分的同学分别是以上{}名同学'.format(a, c))

样题7:

某生鲜超市推出打折促销活动,活动内容如下:

交款时间 折扣
19点以前 无折扣
19点以后 9折
20点以后 7折
21点以后 5折
22点以后 3折

请编写程序,根据结算时间,计算应交金额,要求如下:
1.程序运行时:先输入交款时间,再输入应交金额;
2、输出:根据交款时间的折扣计算实交金额。

输入、输出结果:
请输入交款时间(点):22
请输入应交金额(元):62
折扣:5 折
实交金额:31.0 元

a = int(input('请输入交款时间(点):'))
b = eval(input('请输入应交金额(元):'))

if a > 22:
    discount = 0.3
    discount_cn = '3折'
elif a > 21:
    discount = 0.5
    discount_cn = '5折'
elif a > 20:
    discount = 0.7
    discount_cn = '7折'
elif a > 19:
    discount = 0.9
    discount_cn = '9折'
else:
    discount = 1
    discount_cn = '无折扣'

pay = b * discount
pay = round(pay, 1)

print('折扣:', discount_cn)
print('实交金额:{}元'.format(pay))

样题8:

某公司1月-6月销售额如下表所示:

月份 销售额(万)
1月 51
2月 19
3月 22
4月 26
5月 61
6月 90

将上表中各月的销售额存放在列表list1中,即:

list1 = [51, 19, 22, 26, 61, 90]

请编写程序,先输入一个销售额x,然后用循环对列表list1进行遍历,输出所有大于x的销售额。

输入、输出结果:
请输入一个销售额(万):50.3
销售额大于 50.3 万的有:
51 万
61 万
90 万

list1 = [51, 19, 22, 26, 61, 90]

a = eval(input('请输入一个销售额(万):'))

print('销售额大于{}万的有:'.format(a))
for b in list1:
    if b > a:
        print(b, '万')

样题9:

将上题销售表中的数据用字典result表示为:

result = {'month_num': 6,
          'sales': [
              {'month': '1月', 'sale': 51}, {'month': '2月', 'sale': 19},
              {'month': '3月', 'sale': 22}, {'month': '4月', 'sale': 26},
              {'month': '5月', 'sale': 61}, {'month': '6月', 'sale': 90}
          ]
          }

其中:字典 result 的'sales'键的值是一个列表。
请编写程序,先输入一个销售额(万):x,然后用循环对'sales'键的值进行遍历,输出所有销售额大于x的月份和对应的销售额。

输入、输出结果:
请输入一个销售额(万):50.2
销售额大于 50.2 万的月份是:
1月 51 万
5月 61 万
6月 90万

result = {'month_num': 6,
          'sales': [
              {'month': '1月', 'sale': 51}, {'month': '2月', 'sale': 19},
              {'month': '3月', 'sale': 22}, {'month': '4月', 'sale': 26},
              {'month': '5月', 'sale': 61}, {'month': '6月', 'sale': 90}
          ]
          }

a = eval(input('请输入一个销售额(万):'))

print('销售额大于{}万的月份是:'.format(a))
for b in result['sales']:
    if b['sale'] > a:
        print(b['month'], str(b['sale']) + '万')

样题10:

已知列表:

list1 = [86, 78, 98, 60, 24, 40, 52, 58, 64, 65, 67, 70, 82, 92, 85]

请编写程序,要求:程序运行时,先输入一个数x,然后输出列表中大于x的所有数值,并统计大于x的数值个数,程序输入、输出结果如下所示:
输入、输出结果样例:
请输入一个数:81
大于 81 的数有:
86,98,82,92,85,共有 5 个。

list1 = [86, 78, 98, 60, 24, 40, 52, 58, 64, 65, 67, 70, 82, 92, 85]

x = eval(input('请输入一个数:'))

list2 = []
count = 0
print('大于{}的数有:'.format(x))
for a in list1:
    if a > x:
        list2.append(a)
        count += 1
print(','.join(map(str, list2)), ',', '共有{}个'.format(count))

样题11:

已知城市信息如下表所示:

城市 面积(平方公里) 人口(万)
广州 7435 1270.08
深圳 2050 1035.79
厦门 1569 353.13
青岛 11026 871.51

现将城市信息用字典和列表表示为:

result = {
    'city_num': 4,
    'city_list': [
        {'city_name': '广州', 'city_area': 7435, 'population': 1270.08},
        {'city_name': '深圳', 'city_area': 2050, 'population': 1035.79},
        {'city_name': '厦门', 'city_area': 1569, 'population': 353.13},
        {'city_name': '青岛', 'city_area': 11026, 'population': 871.51},
    ]
}

请编写一个按城市名称查询城市面积和人口的程序,程序的输入、输出格式要求如下:
如果找到了,则输出:
请输入要查找的城市:厦门
查找的城市是: 厦门 ,面积: 1569 平方公里,人口: 353.13 万
请输入要查找的城市:上海
没有这个城市!

result = {
    'city_num': 4,
    'city_list': [
        {'city_name': '广州', 'city_area': 7435, 'population': 1270.08},
        {'city_name': '深圳', 'city_area': 2050, 'population': 1035.79},
        {'city_name': '厦门', 'city_area': 1569, 'population': 353.13},
        {'city_name': '青岛', 'city_area': 11026, 'population': 871.51},
    ]
}

a = input('请输入要查找的城市:')

flag = 0
for b in result['city_list']:
    if a == b['city_name']:
        print('查找的城市是:{} , 面积:{}平方公里 , 人口:{}万'.format(b['city_name'], b['city_area'], b['population']))
        flag = 1
if flag == 0:
    print('没有这个城市!')

样题12:

设置一个字典company存储一个公司的部门信息;其中organization 键值用一个列表存储各部门的信息,
列表的元素由多个字典组成;每个字典的元素包括部门名称('dep_name')、部长('minister')和
人数(' num_people ')。

company = {'name': '神通计算机有限公司',
           'found_date': '2010-3-1',
           'organization':
               [{'dep_name': '人事部', 'minister': '张大刚', 'num_people': 5},
                {'dep_name': '财务部', 'minister': '包慧慧', 'num_people': 7},
                {'dep_name': '综合部', 'minister': '沈谦', 'num_people': 3},
                {'dep_name': '办公室', 'minister': '谭小琴', 'num_people': 4},
                {'dep_name': '销售部', 'minister': '罗飞虎', 'num_people': 10},
                {'dep_name': '技术研发部', 'minister': '肖浩彤', 'num_people': 15},
                {'dep_name': '售后服务部', 'minister': '葛翠珊', 'num_people': 12}
                ]
           }

根据程序中的以下数据,编程实现:
(1)计算:求总人数、平均人数;
(2)查询:输入要查询的部门,若有该部门则打印输出其部长、人数,否则输出“无此部门!”。

company = {'name': '神通计算机有限公司',
           'found_date': '2010-3-1',
           'organization':
               [{'dep_name': '人事部', 'minister': '张大刚', 'num_people': 5},
                {'dep_name': '财务部', 'minister': '包慧慧', 'num_people': 7},
                {'dep_name': '综合部', 'minister': '沈谦', 'num_people': 3},
                {'dep_name': '办公室', 'minister': '谭小琴', 'num_people': 4},
                {'dep_name': '销售部', 'minister': '罗飞虎', 'num_people': 10},
                {'dep_name': '技术研发部', 'minister': '肖浩彤', 'num_people': 15},
                {'dep_name': '售后服务部', 'minister': '葛翠珊', 'num_people': 12}
                ]
           }

total_people = 0
for a in company['organization']:
    total_people += a['num_people']
    average_people = total_people / len(company['organization'])
print('总人数:{}人,平均人数:{}人'.format(total_people, average_people))

query = input('请输入要查询的部门:')
flag = 0
for a in company['organization']:
    if query == a['dep_name']:
        print('部长:{},人数:{}人'.format(a['minister'], a['num_people']))
        flag = 1
if flag == 0:
    print('无此部门!')

样题13:

设置一个列表sList,用于存储工资的数据。列表sList中存储7个员工的工资数据,
每个员工的工资数据保存在一个字典中;每个字典均包括员工编号('number')、
姓名('name')、基本工资('salary')和津贴('subsidy')。

sList = [{'number': '001', 'name': '张大刚', 'salary': 5200, 'subsidy': 2600},
         {'number': '002', 'name': '包慧慧', 'salary': 6850, 'subsidy': 3500},
         {'number': '003', 'name': '沈谦', 'salary': 3980, 'subsidy': 1800},
         {'number': '004', 'name': '谭小琴', 'salary': 4770, 'subsidy': 2800},
         {'number': '005', 'name': '罗飞虎', 'salary': 6100, 'subsidy': 3100},
         {'number': '006', 'name': '肖浩彤', 'salary': 5600, 'subsidy': 2600},
         {'number': '007', 'name': '葛翠珊', 'salary': 4330, 'subsidy': 2100},
         ]

根据程序中的以下数据,编程实现:
(1)查询:输入要查询的员工编号,若有该编号则打印输出对应的姓名、总工资,否则输出“无此员工!”。
(2)计算:最高工资、最低工资('salary'),及其对应的员工姓名。

sList = [{'number': '001', 'name': '张大刚', 'salary': 5200, 'subsidy': 2600},
         {'number': '002', 'name': '包慧慧', 'salary': 6850, 'subsidy': 3500},
         {'number': '003', 'name': '沈谦', 'salary': 3980, 'subsidy': 1800},
         {'number': '004', 'name': '谭小琴', 'salary': 4770, 'subsidy': 2800},
         {'number': '005', 'name': '罗飞虎', 'salary': 6100, 'subsidy': 3100},
         {'number': '006', 'name': '肖浩彤', 'salary': 5600, 'subsidy': 2600},
         {'number': '007', 'name': '葛翠珊', 'salary': 4330, 'subsidy': 2100},
         ]

# (1)查询:输入要查询的员工编号,若有该编号则打印输出对应的姓名、总工资,否则输出“无此员工!”
num = str(input('请输入员工编号:'))
flag = 0
for i in sList:
    if num == i['number']:
        total = i['salary'] + i['subsidy']
        print('姓名:{} , 总工资:{}'.format(i['name'], total))
        flag = 1
if flag == 0:
    print('无此员工')

# (2)计算:最高工资、最低工资('salary'),及其对应的员工姓名
max_salary = 0
max_name = ''
min_salary = float('inf')
min_name = ''
for i in sList:
    salary = i['salary']
    if salary > max_salary:
        max_salary = salary
        max_name = i['name']
    if salary < min_salary:
        min_salary = salary
        min_name = i['name']
print('最高工资:{} , 姓名:{}'.format(max_salary, max_name))
print('最低工资:{} , 姓名:{}'.format(min_salary, min_name))