【问题标题】:Return the difference between the largest and smallest values返回最大值和最小值之间的差
【发布时间】:2018-06-07 15:02:24
【问题描述】:

给定一个长度为 1 或多个整数的数组,返回列表中最大值和最小值之间的差。注意:我不想使用 min 和 max 函数.. [10,3,5,6] - 7 , [7,2,10,9] - 8

our_list = []
numbers=int(input("enter numbers").strip()) 
our_list.append(numbers) 
our_list.sort() 
print (our_list)  

这是我的逻辑,首先我将显示输入值的列表,然后我将使用 sort 方法对列表进行排序以从列表中找到最小和最大数,然后从最大值减去最小值但我无法达到结果,这是我到目前为止的代码..

上面的代码甚至没有对数字进行排序,因此无法继续前进,请帮忙。

【问题讨论】:

  • numbers=int(input("enter numbers").strip()) 根本没有做我认为你认为它正在做的事情。我建议查看 stringlist 文档以更好地理解
  • @Sam 好的,我会再读一遍
  • @martineau 因为我正在学习,我想探索不同的方法来实现结果......

标签: python list sorting input


【解决方案1】:

主要问题是您需要按空格(或其他分隔符)分隔,以便用户通过单个 input 提交多个数字。

由于str.split() 被空格分割并返回list,您可以将map 每个元素传递给int 并传递给sorted。这是一个例子:

# retrieve string input
input_str = input('Enter numbers separated by whitespace:\n')

# split by whitespace, convert to integer, then sort
numbers = sorted(map(int, input_str.split()))

# calculate difference between last and first items
res = numbers[-1] - numbers[0]

# display / print result  
print(res) 

【讨论】:

  • 我得到了想要的结果,但是我必须更多地了解地图功能:-)
【解决方案2】:

您的方法的一个变体可能是使用无限循环,在该循环中输入数字,直到用户输入“退出”。

our_list = []
i = 0
while i>= 0:
    numbers = input("enter numbers") 
    if numbers == 'exit':
        break
    our_list.append(int(numbers)) 
print our_list.sort() 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-04
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 2021-06-03
    • 2015-03-28
    相关资源
    最近更新 更多