目录
一.比赛对手
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
a=set(["x","y","z"])
b=set(["x","y","z"])
c=set(["x","y","z"])
c-=set(["x","z"])
a=set(["x"])
for i in a:
for j in b:
for k in c:
if len(set((i,j,k))) == 3 :
print("a:{},b:{},c:{}".format(i,j,k))
- 初始化集合a、b和c为包含"x"、"y"和"z"的集合。
- 从集合c中移除"x"和"z"。
- 将集合a设置为只包含"x"的集合。
- 使用三层嵌套循环遍历集合a、b和c的所有可能组合。
- 如果找到一个组合使得这三个元素互不相同(即集合的长度为3),则输出这个组合。
二.门牌制作
题目:
小蓝要为一条街的住户制作门牌号。
这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。
小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,
例如门牌 1017 需要依次粘贴字符 1、0、1、7,即需要 1 个字符 0,2 个字符 1,1 个字符 7。
请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?
lst=[]
for i in range(1,2021):
s=str(i).count("2")
lst.append(s)
print(sum(lst))
- 首先创建一个空列表
lst=[]
,用于存储每个整数中数字2出现的次数。 - 使用
for
循环遍历从1到2020的整数。在每次循环中,执行以下操作:- 将当前整数转换为字符串
str(i)
。 - 使用
count()
方法计算字符串中数字2出现的次数,并将结果存储在变量s
中。 - 将
s
添加到列表lst
中。
- 将当前整数转换为字符串
- 在循环结束后,使用
sum()
函数计算列表lst
中所有元素的和,并打印结果。
三.生日蜡烛
题目:某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。 现在算起来,他一吹熄了236根蜡烛。
请问,他从多少岁开始过生日party的?
for i in range(1,101):
for j in range(1,101):
sum=i+j
if sum==236:
print(i)
break
print("他是从{}岁开始过生日的".format(i))
内容解析
第 1 行:for i in range(1,101)
:
定义了一个 for 循环,从数字 1 开始循环到 100(不包括 100),每次循环变量 i 自增 1。
第 2 行:for j in range(1,101):
定义了另一个 for 循环,从数字 1 开始循环到 100(不包括 100),每次循环变量 j 自增 1。
第 3 行:sum = i + j
计算变量 i 和 j 的和,并将结果赋值给变量 sum。
第 4 行:if sum == 236:
判断变量 sum 是否等于 236。
第 5 行:print(i)
如果变量 sum 等于 236,则打印变量 i 的值并退出内部循环。
第 6 行:break
退出内部循环。
第 7 行:print("他是从{}岁开始过生日的".format(i))
在外部循环结束后,打印字符串 "他是从{}岁开始过生日的",其中 {} 表示一个占位符,将被变量 i 的值替换。
因为外部循环和内部循环的变量都是从 1 开始循环的,所以当 i 和 j 的和等于 236 时,i 就是从多少岁开始过生日的