gpt4 book ai didi

python - (Python) 类型错误 : 'float' object is not subscriptable

转载 作者:太空宇宙 更新时间:2023-11-03 14:35:15 25 4
gpt4 key购买 nike

我终于有耐心再次使用Python,并且正在尝试一些数学知识来重新使用,但我现在正在尝试制作一个Python脚本,它出现了“float”对象不可下标”错误。再说一次,我刚刚回到Python,我不知道这意味着什么。这可能是显而易见的,但我在 stackoverflow 上看到的只是人们告诉其他人如何修复他们的特定代码,而不是解释它的含义,所以我不知道是什么导致了它。我所知道的是,它与 Pi 是十进制数( float ??)这一事实有关,但我不明白为什么它不能获得它的第 n 个字符。

第 11 行出现“if pi[digit] == digitalChar:”。这是我的代码:

pi = 0
divideBy = 1
digit = 1
digitChar = 3
digitOccurance = 1
while True:
pi = pi - 4 / divideBy
divideBy = divideBy + 2
pi = pi + 4 / divideBy
divideBy = divideBy + 2
if pi[digit] == digitChar:
digit = digit + 1
digitOccurance = 0
print(digitChar)
else:
digitChar = pi[digit]

最后一段代码基本上是为了阻止垃圾邮件并一次只显示一位数字。它的目的是获取“pi”的[digit]位并测试它是否与前一个相同。如果是,它会沿着字符移动并打印字符 [digitChar]。

非常感谢您提前提供的帮助!

最佳答案

对于 float (和整数),您不能简单地访问第 n 个字符。这就是“不可订阅”的意思。

另一方面,字符串可下标的(列表和字典也是如此)。因此,最基本的解决方法是将 float 转换为字符串。但新的问题是“.”。 float 中是字符串的一部分。因此,在执行 str(pi)[digit] == digitalChar 时,您必须确保类型对齐。您可以执行 int(str(pi)[digit]) == digitalChar,但这对于“.”会失败。特点。或者,您可以执行 str(pi)[digit] == str(digitChar) 这适用于所有情况。

您还可以进行设置,使 digitChar 始终为字符串。由于您已将其称为 digitCar,因此变量的类型也是字符串也是有意义的。

pi = 0
divideBy = 1
digit = 1
digitChar = '3'
digitOccurance = 1
while True:
pi = pi - 4 / divideBy
divideBy = divideBy + 2
pi = pi + 4 / divideBy
divideBy = divideBy + 2

# digitChar is a string
if str(pi)[digit] == digitChar:
digit = digit + 1
digitOccurance = 0
print(digitChar)
else:
# make sure to maintain `digitChar` as a string/char type
digitChar = str(pi)[digit]

至于输出,您的逻辑似乎存在一些错误,导致您无法获得正确的输出。

关于python - (Python) 类型错误 : 'float' object is not subscriptable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46996068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com