题目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 可以节省编写循环代码的时间和精力,同时也可以提高代码的可读性。
代码运行结果如图:
题目2:体重比较器
要求:请编程实现如下功能:
(1)程序开始运行时,提醒用户输入三个人的名字和体重(可以分开输入,每次输入名字或者体重);
(2)程序自动比较,找出最重的一个人的名字和体重;
(3)输出的格式不限,但是要有最重人的姓名和体重信息。
🐱👓
程序分析:
- 程序开始需要创建名字和体重,那么就定义两个空列表 name 和 weight;
- 程序开始需要提醒用户输入名字和体重,那么循环 3 次,每次询问用户输入姓名和体重,然后将它们分别添加到列表中;
- 询问后得到的数据添加进列表,我们用append函数。
append()函数是 Python 列表中的方法,用于将一个元素添加到列表的末尾。 - 要得到最重的体重就是比较,用max()函数;
max()函数是 Python 内置函数之一,用于找到一组元素中的最大值。 - 得到最大的体重之后还需要得到最大体重人的名字,那么就找到对应的索引;
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)
运行结果如下:
题目3:统计语句中指定字符的个数
要求:
(1)统计的语句为:Were you born on August 21, 1994 ;
(2)要求使用条件语句,统计该句中所有英文字母、数字的个数的和(不包括空格、逗号等标点符号);
(3)输出一个整数,表示所有英文字母和数字的个数的和。
🐱👓
程序分析:
- 需要统计的是一句话,那么就用字符串储存;
- 要求使用条件语句且不要统计空格和标点符号,那么就用if,else;
- 遍历字符串中每一个字符,如果字符不是空格或逗号,计数器加一。
代码参考如下:
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