鱼C论坛

 找回密码
 立即注册
查看: 2279|回复: 2

[已解决]python能运行,但会报ValueError

[复制链接]
发表于 2022-9-18 09:19:23 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 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([a]) > 0:
    if nums.index([a]) % 88 == 0:
        print(nums.index([a]) / 88, nums.index([a]) / 88)   #求行和列
    else:
        print(nums.index([a]) // 88 + 1, nums.index([a]) % 88)   #求行和列
    nums[nums.index([a])] = a - 1
这是python列表(v)中动动手的第0题,在88*88矩阵中查找你输入的待匹配数,输出它的行和列,我写的这个虽然能运行出结果,但会报一个ValueError,比如我输入1024,虽然会出结果,但会出现“ValueError: [1024] 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([a]) > 0:
ValueError: [1024] is not in list
最佳答案
2022-9-18 09:19:24
本帖最后由 jackz007 于 2022-9-18 12:26 编辑

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

  2. a = int(input("请输入一个待匹配的整数:"))
  3. if 0 <= a <= 1024:
  4.     nums = []
  5.     for i in range(88):
  6.         b = []
  7.         for j in range(88):
  8.             b . append(random . randint(0 , 1024))
  9.         nums . append(b)
  10.     for i in range(88):
  11.         for j in range(88):
  12.             if nums[i][j] == a:
  13.                 print(i , ',' , j)
复制代码


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

  2. a = int(input("请输入一个待匹配的整数:"))
  3. if 0 <= a <= 1024:
  4.     nums = [[random . randint(0 , 1024) for i in range(88)]for j in range(88)]
  5.     for i in range(88):
  6.         for j in range(88):
  7.             if nums[i][j] == a:
  8.                 print(i , ',' , j)
复制代码

最佳答案

查看完整内容

楼主的代码存在根本问题,nums 本应该是二维列表,样子像这样[[1 , 2 , 3 , 4] , [5 , 6 , 7 , 8] , ...],可是,楼主的 nums 却是这个样子[[1] , [2] , [3] , [4] . . .],剩下的代码就无法进一步讨论了。 试试这个代码吧 【简化版】:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-18 09:19:24 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-9-18 12:26 编辑

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

  2. a = int(input("请输入一个待匹配的整数:"))
  3. if 0 <= a <= 1024:
  4.     nums = []
  5.     for i in range(88):
  6.         b = []
  7.         for j in range(88):
  8.             b . append(random . randint(0 , 1024))
  9.         nums . append(b)
  10.     for i in range(88):
  11.         for j in range(88):
  12.             if nums[i][j] == a:
  13.                 print(i , ',' , j)
复制代码


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

  2. a = int(input("请输入一个待匹配的整数:"))
  3. if 0 <= a <= 1024:
  4.     nums = [[random . randint(0 , 1024) for i in range(88)]for j in range(88)]
  5.     for i in range(88):
  6.         for j in range(88):
  7.             if nums[i][j] == a:
  8.                 print(i , ',' , j)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-9-19 10:21:38 | 显示全部楼层
jackz007 发表于 2022-9-18 09:19
楼主的代码存在根本问题,nums 本应该是二维列表,样子像这样[[1 , 2 , 3 , 4] , [5 , 6 , 7 , 8]  ...

谢谢大佬,看来我对二维列表的概念理解有些误解,现在知道原因了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 15:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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