簡體   English   中英

嘗試打印列表內容時,為什么要打印索引?

[英]Why is my index printing when I try to print the contents of the list?

我正在嘗試將用戶提供的數字中的每個數字平方。 我得到正確的輸出,但是最后我得到一個額外的索引,我不確定為什么。 我已經在代碼中添加了注釋,以解釋我在每個步驟中想要做的事情。 最后如何擺脫該索引?

def square_digits(num):

    print(num)

    string_num =(str(num)) #convert the num to a string   

    for word in string_num: #iterate through every digit 

        word = int(word) #convert each digit to an int so we can square it
        square_num = word * word
        str_sq_num = list(str(square_num)) #create a list of those nums

        for count in str_sq_num:  #iterate through list to make it one number  
            print(count, end = "")  


    print(str_sq_num)
    return str_sq_num

因此,給出了示例數字3212 我應該輸出9414 ,而不是我的輸出是9414['4'] 另一個示例是數字6791 ,輸出應為3649811 ,但我的輸出為3649811['1']

問題是循環在python中工作的方式。 for word in string_numfor word in string_num的最后一次迭代中保留了變量str_square_num

例如,假設您的數字為12,則在第一次迭代中, str_square_num將為[1]1平方。 但是將此值設置為[4]或2平方時,將在第二次迭代中覆蓋該值。 因此,數組將始終僅包含最后一位的平方。

如果您的目標是獲取所有指標的數組,請嘗試以下操作:

def square_digits(num):
    print(num)
    string_num =(str(num)) #convert the num to a string
    str_sq_num = []

    for word in string_num: #iterate through every digit 

        word = int(word) #convert each digit to an int so we can square it
        square_num = word * word
        str_sq_num.extend(str(square_num)) #create a list of those nums

    for count in str_sq_num:  #iterate through list to make it one number  
        print(count, end = "")  


    print(str_sq_num)
    return str_sq_num

我不確定您要在這里實現什么目標,但是查看您的示例,我想這應該可行:

def square_digits(num):
    print(num)

    string_num = (str(num))
    str_sq_num = []

    for word in string_num:
        word = int(word)
        square_num = word * word
        str_sq_num.append(square_num)
    for count in str_sq_num:
        print(count, end = "")

    return str_sq_num

無法測試,但是應該這樣做:

def square_digits(string_num):

return "".join([str(int(num)**2) for num in string_num])

暫無
暫無

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

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