import math
def ListSqrRoot(nums):
n=len(nums)
for i in range(n):
nums[i]=math.sqrt(nums[i])
def main():
nums=eval(input("Please enter a list of numbers:"))
print("Before calling the function your list is:")
print (nums)
ListSqrRoot(nums)
print ("After calling the function your list is:")
print (nums)
main()
0
A
답변
0
문제는 eval(input("Please enter a list of numbers:"))
는 불변 인 tuple
반환 그리고 당신은 여기를 수정하려는 :
list
를 작성하여 고정 할 수 있습니다
nums[i] = math.sqrt(nums[i])
:
nums = [x for x in eval(input("Please enter a list of numbers:"))]
을 경고 :eval is evil!
0
핵심 문제는 "1, 2, 3"과 같이 eval에 입력하는 표현식이 불변 (즉, 변경할 수없는 튜플)이라는 것입니다.
또한 이와 같이 eval을 사용하면 위험하며 혼란스러운 오류가 발생할 수 있습니다. (빈 목록에 넣으면 어떻게됩니까?) 파이썬에는 멋진 문자열 조작 함수가 풍부하기 때문에 완전히 필요하지 않습니다. 시도해보십시오.
line = input('enter numbers:')
nums = [int(s.strip()) for s in line.strip().split(',') if s]
먼저 함수로 전달하기 전에 목록으로 변환해야합니다. 튜플은 불변입니다 – roganjosh
튜플 객체를 편집하려면 대체 목록을 사용하십시오. 그 문제는 무엇입니까? –