小儿无赖 发表于 2023-8-10 15:40:19

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

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

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

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

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


学习编程中的Ben 发表于 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 = 0
j = 0

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

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


请记住,在代码示例中进行了适当的格式化和缩进。

如果回答对你有帮助,请给我一个最佳答案!{:10_254:}{:10_254:}{:10_254:}

陶远航 发表于 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;否则输出字符串中包括最大奇数的部分。
如果问题已经解决,请设置最佳答案

isdkz 发表于 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。
页: [1]
查看完整版本: 代码求助,本来很简单的一个代码,但就是不知道哪里错了