鱼C论坛

 找回密码
 立即注册
查看: 1859|回复: 5

[已解决]求助

[复制链接]
发表于 2024-1-23 19:13:18 | 显示全部楼层 |阅读模式

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

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

x
输入:5296
输出: 5
为什么输出结果不对
  1. s = input('输入:')
  2. s_int = int(s)
  3. empty = []#创建一个空列表存放奇数的字符串
  4. if s_int % 2 == 1:#说明他是个奇数
  5.     print('输出:',s_int)
  6. else:#他是个偶数
  7.     for i in range(len(s)):
  8.         for j in range(i+1,len(s)+1):
  9.         #切片看每一个切片是否满足偶数,满足的话添加进空列表
  10.             if int(s[i:j]) % 2 == 1:#奇数
  11.                 empty.append(s[i:j])
  12.             else:
  13.                 continue
  14.     if len(empty) == 0:
  15.         print('输出:0')
  16.     else:
  17.         sorted(empty,reverse = True)
  18.         print('输出:',empty[0])
复制代码
最佳答案
2024-1-23 20:13:19
本帖最后由 jackz007 于 2024-1-23 23:17 编辑
  1.                 empty . append(s[i:j])      # 第 11 行
  2. . . . . . .
  3.         sorted(empty,reverse = True)        # 第 17 行
复制代码


改为:
  1.                empty . append(int(s[i:j]))  # 第 11 行,数值排序不同于字符串排序,本例需要的是数值排序
  2. . . . . . .
  3.         empty . sort(reverse = True)        # 第 17 行,执行 sorted(empty,reverse = True) 并不能改变元素顺序
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2024-1-23 19:13:53 | 显示全部楼层
题目如图
微信截图_20240123191330.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-23 19:14:01 | 显示全部楼层
问题出在判断每个切片是否为奇数的代码中。

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

以下是修改后的代码:

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

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

  11.     if len(empty) == 0:
  12.         print('输出:0')
  13.     else:
  14.         empty.sort(reverse=True) # 按降序排序
  15.         print('输出:', empty[0]) # 输出第一个(最大)奇数子串
复制代码


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-23 20:13:19 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2024-1-23 23:17 编辑
  1.                 empty . append(s[i:j])      # 第 11 行
  2. . . . . . .
  3.         sorted(empty,reverse = True)        # 第 17 行
复制代码


改为:
  1.                empty . append(int(s[i:j]))  # 第 11 行,数值排序不同于字符串排序,本例需要的是数值排序
  2. . . . . . .
  3.         empty . sort(reverse = True)        # 第 17 行,执行 sorted(empty,reverse = True) 并不能改变元素顺序
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-24 11:28:46 | 显示全部楼层

改成功了,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-24 11:30:06 | 显示全部楼层

表情发错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-23 20:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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