MoistenLe 发表于 2023-7-4 19:05:30

头都炸了 课后作业越来越难了 课后作业18 家人们帮我测试下

temp = input("请输入一个正整数:")
while not temp.isdigit():
    temp = input("输入有误,请重新输入:")
   
A = []
for i in range(len(temp)):
    B = int(temp)
    A.append(B)
f = 0
l = -1
cd = len(A)

while A == A:
   while cd>1:
      f+=1
      l-=1
      cd-=2
      if A == A:
            continue
      else:
            break   
    else:      
      print(temp,"是一个回文数.")
      break
else:
   
    print(temp,"不是一个回文数.")
            

家人们帮我测试下,就是图片上这道回文数,这道题,我测试了几次都是符合的,,我是用我的思维做出来的 和老师完全不一样毕竟还学得很少!搞了很久,
现在让我从新做可能我都做不出来了{:9_230:}

编程追风梦 发表于 2023-7-4 19:05:53

本帖最后由 编程追风梦 于 2023-7-4 20:18 编辑

这段代码是一个判断输入数字是否为回文数的程序。回文数是指正向和反向读都相同的数字,比如121、12321等。

根据您的描述,您已经进行了几次测试,并且得到了正确的结果。这是很好的进展!不过,您可能对于这个程序的工作方式还不太理解,让我来帮助解释一下。

程序的逻辑是这样的:
1. 首先,程序会要求您输入一个正整数。
2. 然后,程序会检查您输入的值是否为数字,如果不是数字则要求重新输入,直到输入的值为一个合法的正整数。
3. 接下来,程序会将输入的数字每一位拆分开,存储在列表A中。
4. 程序使用两个指针f和l,从列表A的两端开始同时向中间移动,判断对应位置的数字是否相等。
5. 如果两个指针所指向的数字相等,则继续移动指针,直到指针重合为止。如果所有对应位置的数字都相等,则判断输入的数字为回文数。
6. 如果有任何一对对应位置的数字不相等,程序会跳出循环并输出结果。

至于为什么与您老师教的方式不同,这可能是因为编程问题可以有多种解决方法。关键是理解程序的逻辑和实现方式,而不是与他人的答案完全一致。

我理解你的困惑。这道题是要判断一个输入的正整数是否是回文数,即正读和反读都一样的整数,例如121、1221等都是回文数。

你的代码在逻辑上是有问题的,尤其是在对输入进行处理的部分。你的代码在获取用户输入后,将其转换为了字符串类型,并将字符串中的每个字符转换为整数并存储在列表中。这是一个错误的操作,因为你需要判断整个数字是否是回文数,而不是单独判断每个数字字符是否是回文。

正确的做法是直接对输入的整数进行操作。下面是修改后的代码:

temp = input("请输入一个正整数:")
while not temp.isdigit():
    temp = input("输入有误,请重新输入:")

num = int(temp)
num_str = str(num)

if num_str == num_str[::-1]:
    print(temp, "是一个回文数.")
else:
    print(temp, "不是一个回文数.")



在这里,我们直接将输入的字符串转换为整数,并将其转换为字符串 `num_str`。然后,我们使用切片操作 `num_str[::-1]` 来获取 `num_str` 的反向字符串。最后,我们将原字符串 `num_str` 与其反向字符串进行比较,如果相等,就是回文数,否则不是回文数。

这样修改后的代码应该可以正确地判断回文数了。请再次测试一下,如果还有问题或者其他疑问,欢迎随时问我。加油!学习是一个不断探索的过程,相信你会越来越熟练的!

如果回答有帮助,求求你给我个最佳答案

陶远航 发表于 2023-7-4 19:05:54

问题标题:关于回文数的代码测试
问题内容:家人们帮我测试下,这是一道关于回文数的题目。我做了几次测试都符合要求,但我的解法和老师给的解法完全不同。我还是个编程新手,对这方面的知识了解不多。我已经花了很长时间,现在重新再做可能都做不出来了。

以下是您提供的代码:

python
temp = input("请输入一个正整数:")
while not temp.isdigit():
    temp = input("输入有误,请重新输入:")

A = []
for i in range(len(temp)):
    B = int(temp)
    A.append(B)

f = 0
l = -1
cd = len(A)

while A == A:
    while cd > 1:
      f += 1
      l -= 1
      cd -= 2
      if A == A:
            continue
      else:
            break
    else:
      print(temp, "是一个回文数.")
      break
else:
    print(temp, "不是一个回文数.")


根据您的描述,您想测试这段代码是否可以正确判断一个给定的正整数是否为回文数。回文数是指正序(从左向右)和倒序(从右向左)读都相同的数字。

由于无法直接运行您的代码,我将通过分析代码逻辑来判断它的正确性。

您的代码使用了两个指针 f 和 l,分别指向列表 A 的首尾元素。通过比较这两个元素来判断是否为回文数。我注意到您使用了嵌套的 while 循环,并且在内部进行了一些操作。

根据我对代码的理解,您的思路是不断地将指针向中间移动,同时比较指针所指的元素是否相等。如果所有元素都比较完毕,并且都相等,则判断为回文数。

如果您已经测试过多个样例,并且结果符合预期,那么您的代码可能是正确的。然而,为了更加确定代码的正确性,建议您尝试以下几点:

1. 测试更多的样例,包括回文数和非回文数,以确保代码可以正确判断。
2. 阅读题目要求,确保您的代码符合题目的要求和规定。
3. 参考老师给出的解法,了解更多关于回文数判断的方法和思路,从而提高自己的编程能力。

祝您顺利解决问题!如有任何进一步的疑问,请随时提问。

isdkz 发表于 2023-7-4 19:05:56

这段代码是用来判断一个输入的正整数是否是回文数的。回文数是指正序和倒序都相同的数。

首先,代码会要求用户输入一个正整数,并将输入的值存储在变量temp中。然后,通过一个while循环来验证用户输入的是否为正整数,如果不是,则要求用户重新输入,直到输入的值为正整数为止。

接下来,定义了一个空列表A,用于存储输入的每一位数字。通过一个for循环,将输入的每一位数字转换为整数,并添加到列表A中。

然后,定义了三个变量f、l和cd。变量f的初始值为0,l的初始值为-1,cd的值为列表A的长度。

接下来是一个while循环,循环条件是A等于A。在这个循环中,首先进入一个内部的while循环,循环条件是cd大于1。在这个内部循环中,f和l分别向后和向前移动一位,cd减去2。如果A等于A,则继续内部循环,否则跳出内部循环。

如果跳出内部循环后,A不等于A,则跳出外部while循环,执行else语句块。在else语句块中,打印出输入的值temp和提示信息"是一个回文数",然后跳出整个循环。如果外部while循环条件一开始就不满足,那么直接执行else语句块,打印出输入的值temp和提示信息"不是一个回文数"。

所以,这段代码的作用是判断输入的正整数是否是回文数,并打印相应的结果。

希望这个解释对你有帮助!如果你对代码的某个部分有疑问,请随时提问。

MoistenLe 发表于 2023-7-4 19:06:40

@不二如是

MoistenLe 发表于 2023-7-4 19:08:21

isdkz 发表于 2023-7-4 19:05
这段代码是用来判断一个输入的正整数是否是回文数的。回文数是指正序和倒序都相同的数。

首先,代码会要求 ...

机器人又来了欢迎硅基生命{:7_146:}

额外减小 发表于 2023-7-4 19:54:28

为什么所有人都用chatgpt回答啊...

liuhongrun2022 发表于 2023-7-4 20:14:07

额外减小 发表于 2023-7-4 19:54
为什么所有人都用chatgpt回答啊...

为了C币

sfqxx 发表于 2023-7-4 20:25:03

hh,楼主签名好搞笑{:10_256:}

MoistenLe 发表于 2023-7-4 21:06:56

sfqxx 发表于 2023-7-4 20:25
hh,楼主签名好搞笑

temp = input("请输入一个正整数:")
while not temp.isdigit():
    temp = input("输入有误,请重新输入:")
   
A = []
for i in range(len(temp)):
    B = int(temp)
    A.append(B)
if A == A[::-1]:
    print(temp,"是一个回文数.")
      
else:
   
    print(temp,"不是一个回文数.")
            

看了19课 回来就简单这么多

MoistenLe 发表于 2023-7-4 21:10:33

sfqxx 发表于 2023-7-4 20:25
hh,楼主签名好搞笑

不对 是20

sfqxx 发表于 2023-7-4 22:48:08

这道题很简单,我用luoguB2124测试了一下,50分

看了一下原因,加strip也不对

改成这样就行了,很简单的,就是把它翻转过来一不一样即可

代码:
x = input().strip() #strip可不加,一般防止”\r“
j = x[::-1]
if x == j:
    print('yes')
else:
    print('no')
求最佳答案{:10_254:}

MoistenLe 发表于 2023-7-5 00:29:55

sfqxx 发表于 2023-7-4 22:48
这道题很简单,我用luoguB2124测试了一下,50分

看了一下原因,加strip也不对


输入的是整数啊要先把它变成列表

编程追风梦 发表于 2023-7-5 07:04:43

MoistenLe 发表于 2023-7-5 00:29
输入的是整数啊要先把它变成列表

你这个签名........不太对啊
假设你是男的:你:我爱你,女方:我爱他,男方:他爱我
....................杰哥来也......................

假设你是女的
女爱男,男爱另一个女,女爱你.............
.................好像还找不到很火的女同网红............

sfqxx 发表于 2023-7-5 10:13:43

MoistenLe 发表于 2023-7-4 21:10
不对 是20

那就对了

python/print 发表于 2023-7-5 19:22:19

带有“这个代码是回文数……”的,基本ai无疑了
页: [1]
查看完整版本: 头都炸了 课后作业越来越难了 课后作业18 家人们帮我测试下