3117975470 发表于 2024-1-23 19:13:18

求助

输入:5296
输出: 5
为什么输出结果不对
s = input('输入:')
s_int = int(s)
empty = []#创建一个空列表存放奇数的字符串
if s_int % 2 == 1:#说明他是个奇数
    print('输出:',s_int)
else:#他是个偶数
    for i in range(len(s)):
      for j in range(i+1,len(s)+1):
      #切片看每一个切片是否满足偶数,满足的话添加进空列表
            if int(s) % 2 == 1:#奇数
                empty.append(s)
            else:
                continue
    if len(empty) == 0:
      print('输出:0')
    else:
      sorted(empty,reverse = True)
      print('输出:',empty)

3117975470 发表于 2024-1-23 19:13:53

题目如图

FishC 发表于 2024-1-23 19:14:01

问题出在判断每个切片是否为奇数的代码中。

首先,你应该判断当前切片是否为奇数,而不是整个输入字符串。
其次,你需要使用切片的形式获取当前的子字符串,而不是直接将整个字符串添加到列表中。

以下是修改后的代码:

s = input('输入:')
empty = [] # 创建一个空列表存放奇数的字符串

if int(s) % 2 == 1: # 说明它本身就是个奇数
    print('输出:', s)
else: # 它是个偶数
    for i in range(len(s)):
      for j in range(i+1, len(s)+1):
            sub_str = s # 获取当前的子字符串
            if int(sub_str) % 2 == 1: # 判断是否为奇数
                empty.append(sub_str) # 添加进空列表

    if len(empty) == 0:
      print('输出:0')
    else:
      empty.sort(reverse=True) # 按降序排序
      print('输出:', empty) # 输出第一个(最大)奇数子串

这样就可以得到正确的输出结果了。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 2024-1-23 20:13:19

本帖最后由 jackz007 于 2024-1-23 23:17 编辑

                empty . append(s)      # 第 11 行
. . . . . .
      sorted(empty,reverse = True)      # 第 17 行

改为:
               empty . append(int(s))# 第 11 行,数值排序不同于字符串排序,本例需要的是数值排序
. . . . . .
      empty . sort(reverse = True)      # 第 17 行,执行 sorted(empty,reverse = True) 并不能改变元素顺序

3117975470 发表于 2024-1-24 11:28:46

jackz007 发表于 2024-1-23 20:13
改为:

改成功了,谢谢
{:5_90:}

3117975470 发表于 2024-1-24 11:30:06

3117975470 发表于 2024-1-24 11:28
改成功了,谢谢

表情发错了{:5_108:}
页: [1]
查看完整版本: 求助