中国电子学会Python2级考试习题01

718 阅读4分钟

题目1 :有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

分析:其实这就是一个全排列的问题,将他的所有排列组合写下来就行了。

程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列

c = [1,2,3,4]
for i in c:
    for j in c:
        for k in c:
            if(i != k)and(i != j)and(k != j):
                print(i,j,k)

这段代码使用三层嵌套循环遍历列表 [1, 2, 3, 4] 中的所有可能的组合。

具体来说,第一层循环选定第一个数字 i,第二层循环选定第二个数字 j,第三层循环选定第三个数字 k,然后在每次循环中判断 i,j, k 是否两两不相同,如果满足条件,则打印出这组数。

优化:优化代码可以使用 itertools 库中的 permutations 方法来得到列表中所有的排列组合。

import itertools
c = [1, 2, 3, 4]
for i in itertools.permutations(c, 4):
    print(i)

这段代码中使用 itertools.permutations 方法得到了列表 [1, 2, 3, 4] 中的所有排列组合,并进行遍历输出。相比原始代码,使用 itertools 可以节省编写循环代码的时间和精力,同时也可以提高代码的可读性。

代码运行结果如图:image.png

题目2:体重比较器

要求:请编程实现如下功能:

(1)程序开始运行时,提醒用户输入三个人的名字和体重(可以分开输入,每次输入名字或者体重);

(2)程序自动比较,找出最重的一个人的名字和体重;

(3)输出的格式不限,但是要有最重人的姓名和体重信息。


🐱‍👓

程序分析

  1. 程序开始需要创建名字和体重,那么就定义两个空列表 nameweight
  2. 程序开始需要提醒用户输入名字和体重,那么循环 3 次,每次询问用户输入姓名和体重,然后将它们分别添加到列表中;
  3. 询问后得到的数据添加进列表,我们用append函数。append() 函数是 Python 列表中的方法,用于将一个元素添加到列表的末尾。
  4. 要得到最重的体重就是比较,用max()函数;max() 函数是 Python 内置函数之一,用于找到一组元素中的最大值。
  5. 得到最大的体重之后还需要得到最大体重人的名字,那么就找到对应的索引;index() 函数是 Python 列表中的方法,用于查找某个元素在列表中第一次出现的位置的索引。

建议

这道题就不要创建最大值去一个一个的比较了,max()函数一定是基本要学会使用的,同时在输入体重时候要注意数据类型转换,唯一需要思考的地方就是获取名字的时候,去使用索引找到名字。

参考代码如下:

name=[]
weight=[]
for i in range(3):
    a = input('请输入姓名:')
    b = int(input('请输入体重:'))
    name.append(a)
    weight.append(b)
c = max(weight)
d = weight.index(c)

print("体重最重的人是:",name[d])
print("他的体重是:",c)

运行结果如下:image.png

题目3:统计语句中指定字符的个数

要求

(1)统计的语句为:Were you born on August 21, 1994 ;

(2)要求使用条件语句,统计该句中所有英文字母、数字的个数的和(不包括空格、逗号等标点符号);

(3)输出一个整数,表示所有英文字母和数字的个数的和。


🐱‍👓

程序分析

  1. 需要统计的是一句话,那么就用字符串储存;
  2. 要求使用条件语句且不要统计空格和标点符号,那么就用if,else;
  3. 遍历字符串中每一个字符,如果字符不是空格或逗号,计数器加一。

代码参考如下:

str = 'Were you born on August 21, 1994'
n = 0
for i in str:
    if i==' ' or i==',':
        continue
    else:
        n+=1
print(n)

输出结果:25

如果没有要求使用条件语句,参考代码如下:

str = 'Were you born on August 21, 1994'
n = len(str) - str.count(' ') - str.count(',')
print(n)

输出结果:25