为了账号安全,请及时绑定邮箱和手机立即绑定

将 for 循环转换为 while 循环。我的问题位于最底部,因为我无法为该问题提出更好的格式

将 for 循环转换为 while 循环。我的问题位于最底部,因为我无法为该问题提出更好的格式

森栏 2024-01-04 10:36:13
3.将以下for循环转换为while循环    p=0    for k in range (5,19,3):        print("k=",k)        p+=k    else:        print(k*2)    print(p)输出k= 5k= 8k= 11k= 14k= 173455我的 while 循环def q3():        k=5        p=0        while p<=55:            print("k=",k)            k+=3            p+=k        else:            print(k*2)        print(p)输出k= 5k= 8k= 11k= 14k= 174070  问题。在 for 循环的最后两行中,我的 kx 2 输出为 34(生成的最后 k 值 = 17 x 2) print(p) 为 55(生成的所有 k 值的总和)而我的 while 循环的最后两行生成了 kx 2: 40 (为什么它生成 40?) print(p) 是 70 (同样,为什么它生成 70?)
查看完整描述

2 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

正如 Micheal 提到的,while 循环中的最后一条k +=3语句将被执行,然后退出循环。您需要将您的限制(即 19)和 k 的初始值(即 5)减去 3,或者将最后的 +3 操作反转k -=3。


解决方案一:


p=0                                                                                                                          

k=2                                                                                                                          

while k < 16:                                                                                                                       

    k += 3                                                                                                                    

    p += k                                                                                                                   

    print("k =",k)                                                                                                           

else:                                                                                                                        

    print(k*2) 

print(p)

解决方案2:


p=0                                                                                                                          

k=5                                                                                                                          

while k < 19:                                                                                                                       

    print("k =",k)

    p += k                                   

    k += 3                                                                                                                                                                                                                           

else:   

    k -= 3                                                                                                                     

    print(k*2) 

print(p)


查看完整回答
反对 回复 2024-01-04
?
www说

TA贡献1775条经验 获得超8个赞

结束循环后,for loop计数器始终是最后一个可接受的数字,即 17,但while loop我们手动向计数器添加了 3,因此结束后,while loop计数器具有最后的修改值,即 20。这就是为什么我们应该将 k 减少 3 行print(k*2)。该行else:也是多余的,因此您可以省略它。


print("for version")

p=0

for k in range (5,19,3):

    print("k=",k)

    p+=k

print(k*2)

print(p)


print("while version")

p=0

k=5

while k<19:

    print("k =",k)

    p += k

    k += 3

print((k-3)*2)

print(p)


查看完整回答
反对 回复 2024-01-04
  • 2 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信