Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';我不明白为什么这个赋值代码会抛出错误_Python_Python 3.x - Fatal编程技术网

Python Can';我不明白为什么这个赋值代码会抛出错误

Python Can';我不明白为什么这个赋值代码会抛出错误,python,python-3.x,Python,Python 3.x,注意:我在谷歌上搜索过这篇文章,也读过很多关于同一件事的帖子,但我只是不理解其中的解释。我知道字符串变量是不可变的,但我不明白如何在不改变输入数据的变量内容的情况下获取值并将其拆分为单独的变量。如果有人能告诉我如何以合法的方式编写此代码,我将不胜感激 我是python新手,有其他几种语言的经验。代码在帖子的末尾 文件input.txt包含以下几行: 50100 20110年 30,70 我试图打开文件,将行读入一个列表变量,然后在逗号处将每个值拆分为单独的变量 我得到一个错误: TypeErro

注意:我在谷歌上搜索过这篇文章,也读过很多关于同一件事的帖子,但我只是不理解其中的解释。我知道字符串变量是不可变的,但我不明白如何在不改变输入数据的变量内容的情况下获取值并将其拆分为单独的变量。如果有人能告诉我如何以合法的方式编写此代码,我将不胜感激

我是python新手,有其他几种语言的经验。代码在帖子的末尾

文件
input.txt
包含以下几行:

50100

20110年

30,70

我试图打开文件,将行读入一个列表变量,然后在逗号处将每个值拆分为单独的变量

我得到一个错误:

TypeError:“str”对象不支持项分配

在显示为:度[i]=当前[0]的行处

我已经花了几个小时阅读了关于字符串是如何不可变的帖子,但我不明白为什么这不应该起作用(或者如何编写它使它起作用)。可变度数开始为空。我不知道如何以一种不改变任何东西的方式创建它,或者如何以不同的方式创建它。我尝试将current中的值转换为int,并将它们放入degrees变量中,但仍然得到TypeError

我也不明白为什么我需要一行
degrees=”“
作为开头。我对python的理解是,您不必声明变量,只需编写一个名称并在需要时使用它。但是如果我省略了
degrees=”“
这一行,我会得到一个错误

NameError:未定义名称“度”

但这似乎意味着我必须在使用变量之前声明它

谢谢你的帮助

f = open('input.txt')

content_list = f.readlines()

f.close()

degrees=""

volume=""

for i in range(len(content_list)):

    content_list[i] = content_list[i].strip('\n')

    current = content_list[i].split(",")

    print(content_list[i])

    degrees[i] = current[0]

    volume[i] = current[1]
Python字符串是不可变的

这仅仅意味着,一旦在python中创建了字符串,就不能对其进行更改

a = "Hello"
a[0] = 'J' # This is not allowed by python because you are updating contents of a string

我可以看出,从其他支持这一点的语言来看,这是多么令人沮丧。您可以查看哪些是可变的

我的理解是,您希望将文件的每一列存储在不同的变量中。在Python中,可以使用许多不同的变量类型来存储数据,但它们的工作方式不同。正如TypeError所指出的,不能对字符串类型变量使用项赋值。但是,您可以对字符串执行以下操作:

degrees = ''
string1 = 'abc'
degrees += string1
然后可以在存储的字符串之间使用分隔符,例如斜杠,以便能够识别每个字符串的开头和结尾

string2 = 'def'
degrees += '/' + string2
将值“”赋给度仅意味着度是字符串类型的变量,不包含任何内容。此外,它还定义了变量度,因此如果您稍后调用它,解释器就会知道您所指的是什么

不过,使用支持项分配的变量类型(如列表)更方便。然后可以使用append方法在每次迭代时存储新值

f = open('input.txt')
content_list = f.readlines()
f.close()
degrees = []
volume = []
for i in range(len(content_list)):
    content_list[i] = content_list[i].strip('\n')
    current = content_list[i].split(",")
    degrees.append(current[0])
    volume.append(current[1])

非常感谢,这正是我需要的。来自其他c类型语言的这种不可变的东西没有意义,但我现在明白了如何让它理解我正在尝试将值添加到列表中。谢谢你的解释和展示。我在一些地方发布了这篇文章,刚得到回复“字符串是不可变的”,这是我开始说的,我已经读过了,不理解。不用担心,当一个人使用一种新语言并试图应用另一种语言的逻辑时,这有时会产生很大的误导。我不得不承认,一开始我讨厌Python,但现在我肯定不会回来了。我希望你也一样。哦,你也可以接受答案。