Я хочу поэкспериментировать с кодами из командной строки, поэтому импортируйте argv
из sys
.
from sys import argv
def binary_search(array, item):
low = 0
high = len(array) - 1
while low <= high:
mid = (low + high) // 2 # round down if not an even
guess = array[mid]
if guess == item:
return mid
if guess > item:
high = mid - 1
else:
low = mid + 1
return None
def main():
script, array, item = argv
binary_search(array, item)
При запуске из командной строки:
$ python3 binary_search.py [1, 2, 3] 8
Traceback (most recent call last): File "binary_search.py", line 94, in <module>
main() File "binary_search.py", line 89, in main
script, array, item = argvValueError: too many values to unpack (expected 3)
Я проверил и обнаружил, что аргументы, переданные из командной строки, обрабатываются argv как str.
Как передать массив в качестве аргумента?
Возможный дубликат Как передать массив в python через командную строку