hasaii 发表于 2023-1-31 20:51:23

课后作业第15讲中的最后一题

课后作业第15讲中的最后一题,我的代码是这样的

n = int(input("请输入一个正整数:"))
while n > 0:
    if n%2==0:
      n=n/2
      print(n,"/2=",n/2)
    else:
      n=n*3+1
      print(n,"*3+1=",n*3+1)
    if n == 1:
      break
但是正确代码如下所示,想问问我的代码为什么错??
n = int(input("请输入一个正整数:"))

while n > 0:
    if n%2==0:
      print(n,"/2=",n/2)
      n=n/2
    else:
      print(n,"*3+1=",n*3+1)
      n=n*3+1
    if n == 1:
      break

tommyyu 发表于 2023-1-31 20:54:59

你先对 n 进行了操作。比如 n = 16,按你的程序,n 会先除以 2 变成 8,然后打印 8 / 2 = 4,但这显然是不对的。所以要先打印 16 / 2 = 8,然后再对 n 进行操作。

sfqxx 发表于 2023-1-31 21:03:50

顺序不能反,否则n会变
n = int(input("请输入一个正整数:"))

while n > 0:
    if n%2==0:
      print(n,"/2=",n/2)#先打印,后更改
      n=n/2
    else:
      print(n,"*3+1=",n*3+1)#同理
      n=n*3+1
    if n == 1:
      break
页: [1]
查看完整版本: 课后作业第15讲中的最后一题