**错误代码**
"""
输入一个正数,求出从1开始到这数中所有包含数字3和3的倍数之和。
"""
num = int(input("请输入一个大于1的整数:"))
num01 = 1
sum_num = 0
while num01 <= num:
if num01 % 3 == 0:
sum_num += num01
if "3" in str(num01):
sum_num += num01
num01 += 1
print(f"满足条件的数之和为:{sum_num}")
结果:
请输入一个大于1的整数:10
满足条件的数之和为:21
查错:
两个if条件是并列关系,数字3被计算了两次。
正确代码
"""
输入一个正数,求出从1开始到这数中所有包含数字3和3的倍数之和。
"""
num = int(input("请输入一个大于1的整数:"))
num01 = 1 #初始数值
sum_num = 0 #用于累加和
while num01 <= num: #循环结束条件,
if num01 % 3 == 0: #判断3的倍数
sum_num += num01
elif "3" in str(num01): #判断是否含有3
sum_num += num01
else:pass #不需要else的时候写pass
num01 += 1 #循环结束的渐变条件
print(f"满足条件的数之和为:{sum_num}")
结果:
请输入一个大于1的整数:10
满足条件的数之和为:18
学了一段时间Python,又换了一种写法。
"""
输入一个正数,求出从1开始到这数中所有包含数字3和3的倍数之和。输入一个100以内的正数,求出从1开始到这数中所有包含数字3和3的倍数之和。
"""
num = int(input("请输入一个大于1的整数:"))
l = []
sum = 0 #用于累加和
for n in range(1,num + 1):
if n % 3 == 0: #判断3的倍数
l.append(n)
sum += n
elif "3" in str(n): #判断是否含有3
l.append(n)
sum += n
else:pass #不需要else的时候写pass
print(f"一共有{len(l)}个,累加和:{sum},具体数字为:\n{l}") #输出结果
结果:
请输入一个大于1的整数:100
一共有45个,累加和:2178,具体数字为:
[3, 6, 9, 12, 13, 15, 18, 21, 23, 24, 27, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 42, 43, 45, 48, 51, 53, 54, 57, 60, 63, 66, 69, 72, 73, 75, 78, 81, 83, 84, 87, 90, 93, 96, 99]