鱼C论坛

 找回密码
 立即注册
查看: 1382|回复: 3

[已解决]关于小甲鱼课后习题我不能解决的问题

[复制链接]
发表于 2023-11-16 18:22:55 | 显示全部楼层 |阅读模式

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

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

x
我的想法是先判定是不是奇数
然后存进去数组里面
然后再利用下标来提取出数字进行组合
然后再与前面的数字比较
但不知为何次次返回的都是零

麻烦各位大佬帮我看看
好人一胎八个


#  给定一个字符串 s,请编程求出该字符串中的最大奇数。

temp = input('请输入一个数:')
a = ''
j = []
i = 0
q = 0
p = 0
for each in temp:

    if int(each) / 2 != 0:
      j.append(each)
    else:
        if i == 2:
            q = p
            q = 0
            i = 0
        for a in range(count(j)):
            q += int(j[a])*10**(-a)
            i += 1
            j.clear()
            if q == 0:
                print(q)
            if q >= p:
                p = 0
            else:
                p=q

print(q)
最佳答案
2023-11-16 18:24:09
我看到你的代码有一些错误,下面是对你的代码进行修改后的版本:
temp = input('请输入一个数:')j = []p = 0for each in temp:    if int(each) % 2 != 0:        j.append(each)    else:        q = int(''.join(j))        if q != 0 and q > p:            p = q        j.clear()print(p)
这里是对你的代码进行了如下修改:

1. 将变量a的定义移到循环外部是不必要的,所以去掉了它。

2. 在判断奇数时,应该使用取余运算符%,而不是除法运算符/。所以条件应该改为int(each) % 2 != 0

3. 使用''.join(j)来将列表中的字符连接成字符串,然后再转换为整数。这样可以简化代码,并且避免了使用for循环。

4. 将最大奇数的判断放在循环结束后,而不是在每次循环时进行判断。

请尝试使用修改后的代码,看看是否能够得到预期的结果。如果还有其他问题,请随时提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-16 18:24:09 | 显示全部楼层    本楼为最佳答案   
我看到你的代码有一些错误,下面是对你的代码进行修改后的版本:
temp = input('请输入一个数:')j = []p = 0for each in temp:    if int(each) % 2 != 0:        j.append(each)    else:        q = int(''.join(j))        if q != 0 and q > p:            p = q        j.clear()print(p)
这里是对你的代码进行了如下修改:

1. 将变量a的定义移到循环外部是不必要的,所以去掉了它。

2. 在判断奇数时,应该使用取余运算符%,而不是除法运算符/。所以条件应该改为int(each) % 2 != 0

3. 使用''.join(j)来将列表中的字符连接成字符串,然后再转换为整数。这样可以简化代码,并且避免了使用for循环。

4. 将最大奇数的判断放在循环结束后,而不是在每次循环时进行判断。

请尝试使用修改后的代码,看看是否能够得到预期的结果。如果还有其他问题,请随时提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-16 18:28:07 | 显示全部楼层
你的代码中存在一些错误,让我们来逐个解决。

首先,你想要判断一个数字是否为奇数,但是你的判断条件写错了。应该使用取模运算符(%)来判断一个数字是否为奇数,而不是除以2再判断是否不等于0。所以你的条件应该是  int(each) % 2 != 0 。

其次,在你的代码中,你试图将奇数存储到列表 j 中,但是你的存储逻辑也有问题。你可以直接将奇数字符串追加到 j 列表中,而不需要进行后续的组合操作。

接着,你使用了 count(j) 来获取列表 j 的元素个数,但是这是错误的写法。你应该使用 len(j) 来获取列表 j 的元素个数。

最后,你的代码中有一些逻辑错误,导致最终输出的结果并不是你想要的。你可以考虑重新审视你的解题思路,简化代码逻辑。

以下是修改后的代码:
temp = input('请输入一个数:')
j = []

for each in temp:
    if int(each) % 2 != 0:
        j.append(each)

if len(j) == 0:
    print(0)
else:
    print(int(''.join(j)))

这段代码首先将输入的数字中的奇数字符存储到列表 j 中,然后判断 j 列表是否为空,如果为空则输出0,否则将 j 列表中的字符连接起来并转换为整数输出。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-16 19:05:54 | 显示全部楼层
isdkz 发表于 2023-11-16 18:28
你的代码中存在一些错误,让我们来逐个解决。

首先,你想要判断一个数字是否为奇数,但是你的判断条件写 ...

谢谢你我的英雄
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 04:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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