如何修复 TypeError:'int' 对象不可下标

2025-03-12 08:50:00
admin
原创
114
摘要:问题描述:我正在尝试一段简单的代码,获取某人的姓名和年龄,并让他/她知道他们何时年满 21 岁......不考虑负面因素和所有这些,只是随机的。我一直收到这个'int' object is not subscriptable错误。name1 = raw_input("What's your name...

问题描述:

我正在尝试一段简单的代码,获取某人的姓名和年龄,并让他/她知道他们何时年满 21 岁......不考虑负面因素和所有这些,只是随机的。

我一直收到这个'int' object is not subscriptable错误。

name1 = raw_input("What's your name? ")
age1 = raw_input ("how old are you? ")
x = 0
int([x[age1]])
twentyone = 21 - x
print "Hi, " + name1+ " you will be 21 in: " + twentyone + " years."
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[34], line 4
      2 age1 = input ("how old are you? ")
      3 x = 0
----> 4 int([x[age1]])
      5 twentyone = 21 - x
      6 print "Hi, " + name1+ " you will be 21 in: " + twentyone + " years."

TypeError: 'int' object is not subscriptable

解决方案 1:

当您键入时x = 0,将创建一个新int变量(名称)并为其分配零。

当您键入时x[age1],正在尝试访问age1第'个条目,就像x一个数组一样。

解决方案 2:

问题出在这条线上,

int([x[age1]])

你想要的是

x = int(age1)

您还需要将 int 转换为字符串以便输出......

print "Hi, " + name1+ " you will be 21 in: " + str(twentyone) + " years."

完整的脚本如下:

name1 = raw_input("What's your name? ")
age1 = raw_input ("how old are you? ")
x = 0
x = int(age1)
twentyone = 21 - x
print "Hi, " + name1+ " you will be 21 in: " + str(twentyone) + " years."

解决方案 3:

'int' 对象不可下标,在 Python 中是 TypeError。为了更好地理解此错误是如何发生的,让我们考虑以下示例:

list1 = [1, 2, 3]
print(list1[0][0])

如果我们运行代码,您将在 Python3 中收到相同的 TypeError。

TypeError: 'int' object is not subscriptable

这里列表的索引超出了范围。如果将代码修改为:

print(list1[0])

输出将为 1(因为 Python 列表中的索引从零开始),因为现在列表的索引在范围内。

1

当运行代码(与问题一起给出)时,会发生 TypeError 并指向代码的第 4 行:

int([x[age1]])

目的可能是创建一个整数列表(尽管根本不需要为单个数字创建列表)。所需的只是将输入(反过来转换为整数)分配给变量。

因此,最好按如下方式编码:

name = input("What's your name? ")
age = int(input('How old are you? '))
twenty_one = 21 - age
if(twenty_one < 0):
    print('Hi {0}, you are above 21 years' .format(name))
elif(twenty_one == 0):
    print('Hi {0}, you are 21 years old' .format(name))
else:
    print('Hi {0}, you will be 21 years in {1} year(s)' .format(name, twenty_one))

输出:

What's your name? Steve
How old are you? 21
Hi Steve, you are 21 years old

解决方案 4:

当你写的时候x = 0x是一个 int...所以你不能这样做,x[age1]因为xint

解决方案 5:

您在这里想做什么:int([x[age1]])?? 这毫无意义。

您只需将年龄输入转换为int

name1 = raw_input("What's your name? ")
age1 = raw_input ("how old are you? ")
twentyone = 21 - int(age1)
print "Hi, %s you will be 21 in: %d years." % (name1, twentyone)

解决方案 6:

您需要先将 age1 转换为 int,以便进行减法运算。然后将结果转回字符串进行显示:

name1 = raw_input("What's your name? ")
age1 = raw_input ("how old are you? ")
twentyone = str(21 - int(age1))
print "Hi, " + name1+ " you will be 21 in: " + twentyone + " years."

解决方案 7:

name1 = input("What's your name? ")
age1 = int(input ("how old are you? "))
twentyone = str(21 - int(age1))

if age1<21:
    print ("Hi, " + name1+ " you will be 21 in: " + twentyone + " years.")

else:
    print("You are over the age of 21")

解决方案 8:

这样就简单多了;

name = input("What's your name? ")
age = int(input("How old are you? "))
print ("Hi,{0} you will be 21 in {1} years.".format(name, 21 - age))`

解决方案 9:

x 已经是整数(x=0),而您再次尝试使 x 再次成为整数,并且您给出的索引超出了限制,因为 x 已经只有一个索引(0),而您尝试给出与年龄相同的索引,所以这就是您收到此错误的原因。使用这个简单的代码

name1 = input("What's your name? ")
age1 = int(input ("how old are you?" ))
x=0
twentyone = str(21-age1)
print("Hi, " +name1+ " you will be 21 in: " + twentyone + " years.")

解决方案 10:

嗯,所有这些答案都是正确的,但这里有一个更现代的方法!

name1 : str = input("What's your name? ")
age1 : int = int(input ("how old are you? "))
twentyone : int = 21 - age1
print('Hi, {}, you will be 21 in: {} years'.format(name1, age1))
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   3975  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   2742  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Freshdesk、ClickUp、nTask、Hubstaff、Plutio、Productive、Targa、Bonsai、Wrike。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在项目管理过程中面临着诸多痛点,如任务分配不...
项目管理系统   80  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Monday、TeamGantt、Filestage、Chanty、Visor、Smartsheet、Productive、Quire、Planview。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多项目经理和团队在管理复杂项目时,常...
开源项目管理工具   88  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Smartsheet、GanttPRO、Backlog、Visor、ResourceGuru、Productive、Xebrio、Hive、Quire。在当今快节奏的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在选择项目管理工具时常常面临困惑:...
项目管理系统   77  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用