簡體   English   中英

無法弄清楚為什么此賦值代碼會引發錯誤

[英]Can't figure out why this assignment code throws an error

注意:我已經在Google上搜索了此書,並閱讀了許多有關同一內容的文章,但我只是不理解這些解釋。 我知道答案是字符串變量是不可變的,但是我不明白如何在不更改變量內容的情況下獲取值並將其拆分為單獨的變量。如果有人可以向我展示如何以合法的方式編寫此代碼,我將不勝感激。

我是python新手,具有其他幾種語言的經驗。 代碼在帖子末尾。

文件input.txt包含幾行,例如:

50,100

20110

30,70

我正在嘗試打開文件,將行讀入列表變量,然后在逗號處將每個值拆分為單獨的變量。

我得到錯誤:

TypeError:'str'對象不支持項目分配

在讀取的行上:度[i] =當前[0]

我現在已經花了幾個小時閱讀有關如何字符串不可變的文章,但是我只是不明白為什么它不起作用(或如何編寫使其起作用)。 可變度數開始為空。 我不知道該如何以不改變任何內容的方式來創建它,或者如何以不同的方式進行操作。 我嘗試將current中的值強制轉換為int並將其放在degree變量中,但仍然得到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中,您可以使用許多不同的變量類型存儲數據,但是它們的工作方式並不完全相同。 正如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])

Python字符串是不可變的。

這只是意味着一旦在python中創建了字符串,就無法更改它。

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

我可以看到來自支持此功能的其他語言如何令人沮喪。 您可以看一下python中可變的字節數組

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM