求助
输入: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) 题目如图
问题出在判断每个切片是否为奇数的代码中。
首先,你应该判断当前切片是否为奇数,而不是整个输入字符串。
其次,你需要使用切片的形式获取当前的子字符串,而不是直接将整个字符串添加到列表中。
以下是修改后的代码:
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 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) 并不能改变元素顺序 jackz007 发表于 2024-1-23 20:13
改为:
改成功了,谢谢
{:5_90:} 3117975470 发表于 2024-1-24 11:28
改成功了,谢谢
表情发错了{:5_108:}
页:
[1]