鱼C论坛

 找回密码
 立即注册
查看: 2225|回复: 15

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

[复制链接]
发表于 2023-7-4 19:05:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

家人们帮我测试下,就是图片上这道回文数,这道题,我测试了几次都是符合的,,我是用我的思维做出来的 和老师完全不一样  毕竟还学得很少!  搞了很久,
现在让我从新做可能我都做不出来了
213123.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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` 与其反向字符串进行比较,如果相等,就是回文数,否则不是回文数。

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

如果回答有帮助,求求你给我个最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

以下是您提供的代码:
pythontemp = input("请输入一个正整数:")while not temp.isdigit():    temp = input("输入有误,请重新输入:")A = []for i in range(len(temp)):    B = int(temp[i])    A.append(B)f = 0l = -1cd = len(A)while A[f] == A[l]:    while cd > 1:        f += 1        l -= 1        cd -= 2        if A[f] == A[l]:            continue        else:            break    else:        print(temp, "是一个回文数.")        breakelse:    print(temp, "不是一个回文数.")
根据您的描述,您想测试这段代码是否可以正确判断一个给定的正整数是否为回文数。回文数是指正序(从左向右)和倒序(从右向左)读都相同的数字。

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

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

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

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

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

祝您顺利解决问题!如有任何进一步的疑问,请随时提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

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

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

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

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

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

希望这个解释对你有帮助!如果你对代码的某个部分有疑问,请随时提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-4 19:06:40 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-4 19:08:21 | 显示全部楼层
isdkz 发表于 2023-7-4 19:05
这段代码是用来判断一个输入的正整数是否是回文数的。回文数是指正序和倒序都相同的数。

首先,代码会要求 ...

机器人又来了  欢迎硅基生命
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 19:54:28 | 显示全部楼层
为什么所有人都用chatgpt回答啊...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 20:14:07 | 显示全部楼层
额外减小 发表于 2023-7-4 19:54
为什么所有人都用chatgpt回答啊...

为了C币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 20:25:03 | 显示全部楼层
hh,楼主签名好搞笑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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[i])
    A.append(B)
if A == A[::-1]:
    print(temp,"是一个回文数.")
        
else:
   
    print(temp,"不是一个回文数.")
            

看了19课 回来就简单这么多
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-4 21:10:33 | 显示全部楼层
sfqxx 发表于 2023-7-4 20:25
hh,楼主签名好搞笑

不对 是20
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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')
求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-5 00:29:55 From FishC Mobile | 显示全部楼层
sfqxx 发表于 2023-7-4 22:48
这道题很简单,我用luoguB2124测试了一下,50分

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

输入的是整数啊  要先把它变成列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-5 07:04:43 | 显示全部楼层
MoistenLe 发表于 2023-7-5 00:29
输入的是整数啊  要先把它变成列表

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

假设你是女的
女爱男,男爱另一个女,女爱你.............
.................好像还找不到很火的女同网红............
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-5 10:13:43 | 显示全部楼层

那就对了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-5 19:22:19 | 显示全部楼层
带有“这个代码是回文数……”的,基本ai无疑了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 09:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表