Find the nearest value to the given one.
You are given a list of values as set form and a value for which you need to find the nearest one.
For example, we have the following set of numbers: 4, 7, 10, 11, 12, 17, and we need to find the nearest value to the number 9. If we sort this set in the ascending order, then to the left of number 9 will be number 7 and to the right - will be number 10. But 10 is closer than 7, which means that the correct answer is 10.
A few clarifications:
- If 2 numbers are at the same distance, you need to choose the smallest one;
- The set of numbers is always non-empty, i.e. the size is >=1;
- The given value can be in this set, which means that it’s the answer;
- The set can contain both positive and negative numbers, but they are always integers;
- The set isn’t sorted and consists of unique numbers.
Input: Two arguments. A list of values in the set form. The sought value is an int.
Output: Int.
Example:
nearest_value({4, 7, 10, 11, 12, 17}, 9) == 10
nearest_value({4, 7, 10, 11, 12, 17}, 8) == 7
-> Solve it
def nearest_value(values: set, one: int) -> int:
return min((abs(n-one), n) for n in values
def nearest_value(values: set, one: int) -> int:
return min((abs(n-one), n) for n in values
abs(x)는 어떤 숫자를 입력받았을 때, 그 숫자의 절댓값을 돌려주는 함수이다.
>>> abs(3)
3
>>> abs(-3)
3
>>> abs(-1.2)
1.2
def nearest_value(value: set, one: int) -> int:
values = list(values)
values.sort()
near_value = values[0] # 제일 작은 것.
for i in range(1, len(values)):
if abs(values[i] - one) < abs(near_value - one):
near_value = valuses[i]
retrun near_value
참고 : wikidocs.net/32
if __name__ == '__main__':
print("Example:")
print(nearest_value({4, 7, 10, 11, 12, 17}, 9))
# These "asserts" are used for self-checking and not for an auto-testing
assert nearest_value({4, 7, 10, 11, 12, 17}, 9) == 10
assert nearest_value({4, 7, 10, 11, 12, 17}, 8) == 7
assert nearest_value({4, 8, 10, 11, 12, 17}, 9) == 8
assert nearest_value({4, 9, 10, 11, 12, 17}, 9) == 9
assert nearest_value({4, 7, 10, 11, 12, 17}, 0) == 4
assert nearest_value({4, 7, 10, 11, 12, 17}, 100) == 17
assert nearest_value({5, 10, 8, 12, 89, 100}, 7) == 8
assert nearest_value({-1, 2, 3}, 0) == -1
print("Coding complete? Click 'Check' to earn cool rewards!")
'프로그래밍 공부' 카테고리의 다른 글
15. Python, CheckiO Elementary_Correct Sentence (0) | 2020.10.22 |
---|---|
*14. Python, CheckiO Elementary_Between Markers (simplified) (1) | 2020.10.22 |
12. Python, CheckiO Elementary_Beginning Zeros (0) | 2020.10.22 |
**11. Python, CheckiO Elementary_Split Pairs (0) | 2020.10.22 |
10. Python, CheckiO Elementary_Max Digit (0) | 2020.10.22 |
댓글