【问题标题】:How to pass empty list via python input() function如何通过 python input() 函数传递空列表
【发布时间】:2019-10-19 11:25:11
【问题描述】:
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 为底的无效文字:''

【问题讨论】:

  • "".split(",") == [""]。添加逻辑来处理那个空的情况。
  • @jonrsharpe 或者只是捕获异常并说“列表格式不正确或为空”...
  • 感谢您的帮助。也许我们可以在处理值错误异常时将 arr 初始化为 []?通过检查是否没有正确创建 arr

标签: python algorithm exception input binary-search-tree


【解决方案1】:

正如@Jon Clements 提到的,使用 try/except 块:

“请求宽恕比请求许可更容易”

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!!!")

【讨论】:

    【解决方案2】:

    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!!!")
    

    【讨论】:

      猜你喜欢
      • 2020-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多