e接awa接外圈刮 发表于 2023-11-16 18:22:55

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

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

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


#给定一个字符串 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)*10**(-a)
            i += 1
            j.clear()
            if q == 0:
                print(q)
            if q >= p:
                p = 0
            else:
                p=q

print(q)

Mike_python小 发表于 2023-11-16 18:24:09

我看到你的代码有一些错误,下面是对你的代码进行修改后的版本:


temp = input('请输入一个数:')
j = []
p = 0

for 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. 将最大奇数的判断放在循环结束后,而不是在每次循环时进行判断。

请尝试使用修改后的代码,看看是否能够得到预期的结果。如果还有其他问题,请随时提问。

isdkz 发表于 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 列表中的字符连接起来并转换为整数输出。

e接awa接外圈刮 发表于 2023-11-16 19:05:54

isdkz 发表于 2023-11-16 18:28
你的代码中存在一些错误,让我们来逐个解决。

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

谢谢你我的英雄{:10_254:}
页: [1]
查看完整版本: 关于小甲鱼课后习题我不能解决的问题