>

사용자가 제공 한 숫자로 모든 숫자를 제곱하려고합니다. 올바른 출력을 얻었지만 끝에 추가 인덱스를 얻습니다. 왜 그런지 잘 모르겠습니다. 모든 단계에서 수행하려는 작업을 설명하기 위해 코드에 주석을 달았습니다. 결국 해당 인덱스를 제거하려면 어떻게해야합니까?

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'] 입니다. .


  • 답변 # 1

    파이썬에서 루프가 작동하는 방식이 문제입니다. 변수 str_square_num   for word in string_num 의 마지막 반복에서 남았습니다. .

    예를 들어, 첫 번째 반복 str_square_num 에서 숫자가 12라고 가정하면   [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
    
    

  • 답변 # 2

    여러분이 이루고자하는 것이 확실하지 않지만 예제를 보면 이것이 효과가 있다고 생각합니다.

    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
    
    

  • 답변 # 3

    테스트 할 수 없지만 이렇게해야합니다 :

    def square_digits (string_num) :

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

  • 이전 jquery에서 materialize multiselect 선택된 값을 설정하는 방법
  • 다음 css - Avada 바닥 글을 사용한 Z- 색인 위치