Python计算含有3和被3整除的数之和

**错误代码**
"""
输入一个正数,求出从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]

### 回答1: 我们可以用循环来遍历1~100之间的所有,然后用取余运算判断该是否包含6,如果包含,则累加到一个变量中: ```python sum = 0 for i in range(1, 101): if i % 10 == 6 or i // 10 == 6: sum += i print(sum) ``` 这里用到了取余运算 `%`,它可以得到一个除以另一个的余。例如,`7 % 3` 的结果为1,因为7除以3等于2余1。这里我们使用 `i % 10` 来判断个位是否为6,使用 `i // 10` 来判断十位是否为6,其中 `//` 是整除运算符,可以得到一个除以另一个的整部分。例如,`17 // 10` 的结果为1,因为17除以10的整部分为1。 最终的结果为:816。 ### 回答2: 1到100以内所有含有6的分别为6、16、26、36、46、56、60、61、62、63、64、65、66、67、68、69、76、86、96。将这些相加得到的和为: 6+16+26+36+46+56+60+61+62+63+64+65+66+67+68+69+76+86+96=1020。 所以,1到100以内所有含有6的的和为1020。 ### 回答3: 要计算1~100以内所有含6的的和,我们可以使用循环来依次判断每个是否含有6,并将满足条件的累加起来。 算法可以按照以下步骤进行: 1. 初始化一个变量sum为0,用于保存满足条件的字的和。 2. 使用一个循环,从1遍历到100。 3. 在每次循环中,判断当前的是否含有6。可以将该转换为字符串,然后使用字符串中的查找函(如Python中的str.find())来判断是否包含字符"6"。 4. 如果当前含有6,则将该累加到sum变量中。 5. 循环结束后,sum变量即为所求的含有6的字的和。 以下是一个示例的Python代码实现: ```python sum = 0 for i in range(1, 101): if str(i).find('6') != -1: sum += i print("1~100以内所有含6的的和为:", sum) ``` 最后运行该代码,即可得到1~100以内所有含6的的和。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值