Как передать пустой список через функцию ввода Python () - PullRequest
0 голосов
/ 19 октября 2019
def binarysearch(arr,n):
arr.sort()
while(1):
    i=0
    mid = len(arr)//2
    if(len(arr)==0):
        return False
    elif(len(arr)==1):
        return True if arr[0]==n else False
    else:
        if n==arr[mid]:
            return True
        elif n<arr[mid]:
            arr = arr[:mid]
        else:
            arr = arr[mid:]


if __name__ == '__main__':
arr = list(map(int,input().split(',')))
n   = int(input("Enter the number to search :"))
status,i = binarysearch(arr,n)

if status:

print("Found element " + str(n))
else:
    print("Not Found!!!")

Я новичок в python .. В этой программе ... возможно ли передать пустой список через пользовательский ввод () ..

, потому что .. когда я ничего не дал илипросто ',' при вводе пользовательского ввода для 'arr' в вышеприведенном случае показывает значение ошибки. ValueError: недопустимый литерал для int () с основанием 10: ''

Ответы [ 2 ]

2 голосов
/ 19 октября 2019

Как упомянуто @Jon Clements, используйте блок try / исключением:

"проще просить прощения, чем разрешения"

try:
    arr = list(map(int,input().split(',')))
    n   = int(input("Enter the number to search :"))
    status,i = binarysearch(arr,n)
except ValueError:
   raise ValueError("The list isn't in the right format or empty")

if status:
   print("Found element " + str(n))
else:
    print("Not Found!!!")
1 голос
/ 19 октября 2019

Сочетание input с другими функциями почти всегда делает ваш код сложнее, чем нужно. Сначала получите ввод, обработайте пустой ввод, а затем весь остальной код можно продолжить, предполагая, что ввод не пуст. Как правило, ввод обрабатывается в 3 этапа: получение ввода, проверка ввода и с использованием ввода.

В следующемкаждый блок кода либо проверяет ожидаемое свойство, либо выходит из программы с сообщением об ошибке.

# Get a non-empty input
data = input("Enter a comma-separate list of integers: ")  # Get arr
if not data:    # Validate arr, part 1
   print("No data")
   sys.exit(1)

# Split the comma-separated input into integers
arr = data.split(",")
try:
    arr = [int(x) for x in arr]  # Validate arr, part 2
except ValueError:
    print("Non-integer data found in {}".format(data))
    sys.exit(1)

# Get the search term
data = input("Enter the number to search: ")  # Get n
try:
    n = int(data)  # Validate int
except ValueError:
    print("Non-integer search term: {}".format(data))
    sys.exit(1)

# Use arr and n
status, i = binarysearch(arr, n)

if status:
    print("Found element {}".format(n))
else:
    print("Not Found!!!")
...