Envirchem 发表于 2022-9-18 09:19:23

python能运行,但会报ValueError

本帖最后由 Envirchem 于 2022-9-18 09:20 编辑

a = int(input("请输入一个待匹配的整数:"))
nums = []
c = 0
for i in range(88 * 88):
    import random
    b = random.randint(0, 1024)
    nums.append()
    c += 1
    if c >= 88 * 88:
      break
while nums.index() > 0:
    if nums.index() % 88 == 0:
      print(nums.index() / 88, nums.index() / 88)   #求行和列
    else:
      print(nums.index() // 88 + 1, nums.index() % 88)   #求行和列
    nums)] = a - 1
这是python列表(v)中动动手的第0题,在88*88矩阵中查找你输入的待匹配数,输出它的行和列,我写的这个虽然能运行出结果,但会报一个ValueError,比如我输入1024,虽然会出结果,但会出现“ValueError: is not in list”这样的错误。求大神帮我看一下哪里出了问题?
完整的报错如下:Traceback (most recent call last):
File "C:/Users/29436/Desktop/python homework/523478.py", line 12, in <module>
    while nums.index() > 0:
ValueError: is not in list

jackz007 发表于 2022-9-18 09:19:24

本帖最后由 jackz007 于 2022-9-18 12:26 编辑

      楼主的代码存在根本问题,nums 本应该是二维列表,样子像这样[ , , ...],可是,楼主的 nums 却是这个样子[ , , , . . .],剩下的代码就无法进一步讨论了。
      试试这个代码吧
import random               # 不可以把 import 语句放入循环体

a = int(input("请输入一个待匹配的整数:"))
if 0 <= a <= 1024:
    nums = []
    for i in range(88):
      b = []
      for j in range(88):
            b . append(random . randint(0 , 1024))
      nums . append(b)
    for i in range(88):
      for j in range(88):
            if nums == a:
                print(i , ',' , j)

      【简化版】:
import random               # 不可以把 import 语句放入循环体

a = int(input("请输入一个待匹配的整数:"))
if 0 <= a <= 1024:
    nums = [for j in range(88)]
    for i in range(88):
      for j in range(88):
            if nums == a:
                print(i , ',' , j)

Envirchem 发表于 2022-9-19 10:21:38

jackz007 发表于 2022-9-18 09:19
楼主的代码存在根本问题,nums 本应该是二维列表,样子像这样[ , ...

谢谢大佬,看来我对二维列表的概念理解有些误解,现在知道原因了。
页: [1]
查看完整版本: python能运行,但会报ValueError