사용자 지정 함수 인수 앞에 *를 사용하면 인수로 둘 이상의 데이터 또는 불확실한 양의 데이터를 전달할 수 있다는 것을 배웠습니다. 숫자 함수 등을 추가하려면 함수를 호출 할 때 무제한의 데이터를 전달할 수 있습니다. 하지만 사용자로부터이 번호를 얻고 싶습니다. 얼마나 많은 숫자를 얻을 수 있는지 모르기 때문에 이전에 각각에 대해 변수를 선언 할 수 없습니다. 이제 입력으로 많은 숫자를 가져 와서 사용자 지정 함수와 함께 추가하려면 어떻게해야합니까? 내 생각은 실생활의 계산기와 매우 유사합니다.
다음은 내 코드입니다. 코드를 작성하는 동안 수동으로 입력하는 대신 숫자를 입력으로 얻고 싶습니다. 누군가 내가하려는 일에 대한 코드를 알려 주면 감사하겠습니다.
def add_number(*args):
total = 0
for number in args:
total += number
print(total)
add_number(2, 3, 6, 9)
단일 입력 을 사용해야한다고 말합니다 . 이 경우 .split(separator)
주어진 문자열의 일부 목록을 반환하는 문자열 메서드를 사용하여 입력을 분할 할 수 있습니다 . separator
인수는 선택 사항입니다. 사용자가 공백 문자로 구분 된 숫자를 입력하면이 인수를 전달할 필요가 없습니다. 그렇지 않으면 구분 기호를 전달해야합니다.
numbers = input("Enter the numbers... ").split() # if numbers are separated by any of whitespace characters ("1 2 3 4")
numbers = input("Enter the numbers... ").split(", ") # if numbers are separated by a comma and a space ("1, 2, 3, 4")
참고 : 답변의 다음 부분에서 숫자가 공백 문자로 구분되어 있다고 가정합니다.
numbers
목록 을 인쇄하려면 다음 출력을 얻습니다.
>>> numbers = input("Enter the numbers... ").split()
Enter the numbers... 1 2 3 4
>>> print(numbers)
['1', '2', '3', '4']
우리가 볼 수 있듯이 목록의 모든 항목은 문자열입니다 (따옴표로 인해 : '1'
, 아님 1
). 이들을 함께 연결하려고하면 다음과 같은 결과를 얻을 수 '1234'
있습니다.. 그러나 문자열이 아닌 숫자로 함께 연결하려면 정수 (정수) 또는 부동 (정수가 아닌 숫자) 유형 으로 변환해야 합니다. 하나의 숫자 가 있으면 쉽게 할 수 있습니다 int(number)
. 그러나 우리는 숫자 목록을 얻었고 모든 요소를 int
.
map(func, iterable)
함수 를 사용할 수 있습니다 . 의 func
모든 항목 에을 적용하고 객체-반복자 (목록 아님!)를iterable
반환합니다 .map
numbers = map(int, numbers)
참고 : 목록으로 표시하려면 다음을 수행하면됩니다.
numbers = list(map(int, numbers))
여기서는 필요하지 않습니다.
그리고 지금 우리는 모든 숫자를 던질 수있는 add_number(*args)
별표 (*)를 사용하여 기능 - 포장 을 :
add_number(*numbers)
참고 :sum
함수를 사용 하여 iterable의 모든 숫자를 추가 할 수도 있습니다 .이 경우 단일 반복 가능한 숫자를 가져 오므로 인수를 패킹 할 필요가 없습니다.
sum_ = sum(numbers)
그리고 print
결과는 다음과 같습니다.
print(sum_)
중요 참고 : sum(iterable)
숫자의 합을 반환하고 아무것도 인쇄하지 않는 반면, add_number(*args)
함수 는 None을 반환 하고 숫자를 인쇄합니다 (동일하지 않습니다!). 다음 은 훌륭하고 자세한 설명입니다.
다음은 우리가 작성한 전체 코드입니다.
def add_number(*args):
total = 0
for number in args:
total += number
print(total)
numbers = input("Enter the numbers... ").split() # if numbers are separated by any of whitespace characters ("1 2 3 4")
numbers = map(int, numbers)
add_number(*numbers)
그리고 여기에 똑같은 일을하는 한 줄짜리가 있습니다.- sum
대신 함수를 사용 add_number
하므로 코드에서 다른 것을 필요로하지 않습니다.
print(sum(map(int, input("Enter the numbers... ").split())))
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다