RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1084345
Accepted
Exorsky
Exorsky
Asked:2020-02-18 22:51:27 +0000 UTC2020-02-18 22:51:27 +0000 UTC 2020-02-18 22:51:27 +0000 UTC

TypeError:“int”对象不可下标,冒泡排序

  • 772

我知道问题很简单,但我找不到解决方案。

import random

values = []
temp = 0

print("Enter number of random values")
for i in range(5):
  valuesRandom = random.randrange(0,100)
  values.append(valuesRandom)
  print(values)
  for j in range(5):
    if values[i][j] > values[i+1][j+1]:
      temp = values[i][j]
      values[i][j] = values[i+1][j+1]
      values[i+1][j+1] = temp

我确信错误是我将 int 变量作为列表访问。在 Pascal 中,这是可以做到的,但是如何解决 python 中的错误呢?

python
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. nomnoms12
    2020-02-18T23:09:09Z2020-02-18T23:09:09Z

    你正在做一些非常奇怪的事情:

    valuesRandom = random.randrange(0,100)
      values.append(valuesRandom)
      print(values)
      for j in range(5):
        if values[i][j] > values[i+1][j+1]:
    

    您会得到一个随机数并将其添加到列表中。然后你得到这个数字values[i]并尝试循环访问它的索引从 1 到 5 ......当然,这不起作用。我不知道你期望什么。

    下面是冒泡排序的实现:

    import random
    
    
    li = [random.randint(10, 99) for _ in range(10)]
    print(li)
    
    is_sorted = False
    while not is_sorted:
        is_sorted = True
        for i in range(len(li) - 1):
            if li[i] > li[i+1]:
                is_sorted = False
                li[i], li[i+1] = li[i+1], li[i]
    print(li)
    
    • 3
  2. Best Answer
    Alex
    2020-02-18T23:38:06Z2020-02-18T23:38:06Z
    import random
    
    values = []
    temp = 0
    
    print("Enter number of random values")
    for i in range(5):
        valuesRandom = random.randrange(0,100)
        values.append(valuesRandom)
        print(values) 
    

    执行此代码后,我们将得到以下输出:

    Enter number of random values
    [41]                   
    [41, 77]
    [41, 77, 73]
    [41, 77, 73, 35]
    [41, 77, 73, 35, 12] 
    

    然后由于某种原因,您添加了另一个循环。我假设您不太了解嵌套循环的工作原理。这是一个示例代码:

    for i in [1, 2, 3]:
        print('\nИТЕРАЦИЯ ЦИКЛА')
        print('Текущий элемент: ', i)
        for j in ['A', 'B', 'C', 'D', 'E']:
            print('ИТЕРАЦИЯ ВЛОЖЕННОГО ЦИКЛА')
            print('Текущий элемент (вложки): ', j)
    
            print(f'{i}:{j}')
    

    输出:$ python a.py

    ИТЕРАЦИЯ ЦИКЛА
    Текущий элемент:  1
    ИТЕРАЦИЯ ВЛОЖЕННОГО ЦИКЛА
    Текущий элемент (вложки):  A
    1:A
    ИТЕРАЦИЯ ВЛОЖЕННОГО ЦИКЛА
    Текущий элемент (вложки):  B
    1:B
    ИТЕРАЦИЯ ВЛОЖЕННОГО ЦИКЛА
    Текущий элемент (вложки):  C
    1:C
    ИТЕРАЦИЯ ВЛОЖЕННОГО ЦИКЛА
    Текущий элемент (вложки):  D
    1:D
    ИТЕРАЦИЯ ВЛОЖЕННОГО ЦИКЛА
    Текущий элемент (вложки):  E
    1:E
    
    ИТЕРАЦИЯ ЦИКЛА
    Текущий элемент:  2
    ИТЕРАЦИЯ ВЛОЖЕННОГО ЦИКЛА
    Текущий элемент (вложки):  A
    2:A
    ИТЕРАЦИЯ ВЛОЖЕННОГО ЦИКЛА
    Текущий элемент (вложки):  B
    2:B
    ИТЕРАЦИЯ ВЛОЖЕННОГО ЦИКЛА
    Текущий элемент (вложки):  C
    2:C
    ИТЕРАЦИЯ ВЛОЖЕННОГО ЦИКЛА
    Текущий элемент (вложки):  D
    2:D
    ИТЕРАЦИЯ ВЛОЖЕННОГО ЦИКЛА
    Текущий элемент (вложки):  E
    2:E
    
    ИТЕРАЦИЯ ЦИКЛА
    Текущий элемент:  3
    ИТЕРАЦИЯ ВЛОЖЕННОГО ЦИКЛА
    Текущий элемент (вложки):  A
    3:A
    ИТЕРАЦИЯ ВЛОЖЕННОГО ЦИКЛА
    Текущий элемент (вложки):  B
    3:B
    ИТЕРАЦИЯ ВЛОЖЕННОГО ЦИКЛА
    Текущий элемент (вложки):  C
    3:C
    ИТЕРАЦИЯ ВЛОЖЕННОГО ЦИКЛА
    Текущий элемент (вложки):  D
    3:D
    ИТЕРАЦИЯ ВЛОЖЕННОГО ЦИКЛА
    Текущий элемент (вложки):  E
    3:E
    

    现在在您的代码中:

    import random
    
    values = []
    temp = 0
    
    print("Enter number of random values")
    for i in range(5):
        valuesRandom = random.randrange(0,100)
        values.append(valuesRandom)
        print(values)
        for j in range(5):
            if values[i][j] > values[i+1][j+1]: #Тут и ошибка в индексирование, ведь оно 
                temp = values[i][j] # предназначено для последовательностей
                values[i][j] = values[i+1][j+1] # values[i] вернет целочисленное.
                values[i+1][j+1] = temp # целочисленное нельзя индексировать.
    

    关于“索引”主题的示例代码:

    l1 = [1, 50, 100, [25, 30], 75, 899, 'word', ['first element of nested list', 'the second'], {'key': ('value1', 'value2')}]
    
    a = l1[0]
    
    b = l1[3][0] # l1[3] вернет [25, 30]
    
    c = l1[6]
    
    d = l1 [7][1][4:-1:2] # l1[7][1] вернет 'the second' | а 'the second'[4:-1:2] Это отдельная тема: форматирование строк (срезы)
    
    dict_keys = l1[-1].keys()
    
    dict_value = l1[-1]['key'][0]
    
    print(a)
    print(b)
    print(c)
    print(d)
    print(dict_keys)
    print(dict_value)
    

    结论:

    $ python a.py
    1
    25
    word
    scn
    dict_keys(['key'])
    value1
    

    如果我知道你想在你的代码中做什么,我会写一个解决方案。但我想现在你至少会掌握索引这个话题。 解释器写给你的最基本的事情(TypeError:'int' object is not subscriptable,bubblesort)是你试图索引数字(整数),但这不能完成

    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何从列表中打印最大元素(str 类型)的长度?

    • 2 个回答
  • Marko Smith

    如何在 PyQT5 中清除 QFrame 的内容

    • 1 个回答
  • Marko Smith

    如何将具有特定字符的字符串拆分为两个不同的列表?

    • 2 个回答
  • Marko Smith

    导航栏活动元素

    • 1 个回答
  • Marko Smith

    是否可以将文本放入数组中?[关闭]

    • 1 个回答
  • Marko Smith

    如何一次用多个分隔符拆分字符串?

    • 1 个回答
  • Marko Smith

    如何通过 ClassPath 创建 InputStream?

    • 2 个回答
  • Marko Smith

    在一个查询中连接多个表

    • 1 个回答
  • Marko Smith

    对列表列表中的所有值求和

    • 3 个回答
  • Marko Smith

    如何对齐 string.Format 中的列?

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5