鱼C论坛

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

[已解决]代码求助,本来很简单的一个代码,但就是不知道哪里错了

[复制链接]
发表于 2023-8-10 15:40:19 | 显示全部楼层 |阅读模式

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

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

x
"""求字符串中的最大奇数"""

x = input("请输入一串数字:")
y = len(x)
i = 0
j = 0

while i <= y:
    if int(x[i]) % 2 == 1:
        z = i
        i += 1
    else:
        j += 1
        i += 1

if j == y:
    print(0)
else:
    print(x[:z+1])

最佳答案
2023-8-10 15:40:30
代码中存在两个问题导致运行错误:

1. 在while循环条件中,将判断条件改为i < y,因为索引从0开始计数,所以当i等于y时,已经越界了。

2. 在else块中,应该将j加1,并且在最后判断j是否等于y来确定是否所有数字都是偶数。

以下是修改后的代码:
x = input("请输入一串数字:")y = len(x)i = 0j = 0while i < y:    if int(x[i]) % 2 == 1:        z = i        i += 1    else:        j += 1        i += 1if j == y:    print(0)else:    print(x[:z+1])
请记住,在代码示例中进行了适当的格式化和缩进。

如果回答对你有帮助,请给我一个最佳答案!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-10 15:40:30 | 显示全部楼层    本楼为最佳答案   
代码中存在两个问题导致运行错误:

1. 在while循环条件中,将判断条件改为i < y,因为索引从0开始计数,所以当i等于y时,已经越界了。

2. 在else块中,应该将j加1,并且在最后判断j是否等于y来确定是否所有数字都是偶数。

以下是修改后的代码:
x = input("请输入一串数字:")y = len(x)i = 0j = 0while i < y:    if int(x[i]) % 2 == 1:        z = i        i += 1    else:        j += 1        i += 1if j == y:    print(0)else:    print(x[:z+1])
请记住,在代码示例中进行了适当的格式化和缩进。

如果回答对你有帮助,请给我一个最佳答案!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-10 15:40:35 | 显示全部楼层
你的代码存在几个错误。以下是经过修正的代码:
x = input("请输入一串数字:")
y = len(x)
i = 0
j = 0
z = -1

while i < y:
    if int(x[ i]) % 2 == 1:
        z = i
        break
    else:
        j += 1
    i += 1

if j == y:
    print(0)
else:
    print(x[:z+1])

修正后的代码将会输出字符串中最大的奇数,如果没有奇数则输出0。

主要修改包括:
1. 在while循环中,将条件i <= y修改为i < y,以防止索引越界。
2. 将变量z初始化为-1,以便在找到奇数时正确记录索引。
3. 添加break语句,一旦找到奇数,就退出循环。
4. 最后根据z的值判断是否有奇数。如果z仍为-1,则表示没有奇数,输出0;否则输出字符串中包括最大奇数的部分。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-10 15:40:35 | 显示全部楼层
代码中的问题在于while循环的条件判断和索引的使用。在Python中,字符串的索引是从0开始的,所以在while循环中应该使用i < y而不是i <= y作为条件判断。此外,在while循环内部,应该先对i进行自增操作,然后再判断当前字符的奇偶性。

以下是修正后的代码:
x = input("请输入一串数字:")
y = len(x)
i = 0
j = 0
z = -1

while i < y:
    if int(x[ i]) % 2 == 1:
        z = i
        i += 1
    else:
        j += 1
        i += 1

if j == y:
    print(0)
else:
    print(x[:z+1])

修正后的代码会正确地找到字符串中的最大奇数,并输出结果。如果字符串中没有奇数,则输出0。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-12 17:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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