Python 从用户&;处获取数字;打印最大值和最小值(不使用内置功能)

Python 从用户&;处获取数字;打印最大值和最小值(不使用内置功能),python,list,max,minimum,Python,List,Max,Minimum,我正在回顾一个python练习,它执行以下操作: 读取数字列表,直到“完成”为止 进来了 输入“完成”时,打印 最大的和最小的 数字 它应该是而不是直接 使用内置函数max() 和min() 这是我的消息来源。 回溯说,“'float'对象不可编辑” 我认为我的错误是因为没有正确使用列表来计算最小值和最大值。 任何提示和帮助都将不胜感激 while True: inp = raw_input('Enter a number: ') if inp == 'done' :

我正在回顾一个python练习,它执行以下操作:

  • 读取数字列表,直到“完成”为止 进来了

  • 输入“完成”时,打印 最大的和最小的 数字

  • 它应该是而不是直接 使用内置函数max() 和min()

这是我的消息来源。 回溯说,“'float'对象不可编辑”

我认为我的错误是因为没有正确使用列表来计算最小值和最大值。 任何提示和帮助都将不胜感激

while True:
    inp = raw_input('Enter a number: ')
    if inp == 'done' : 
        break

    try:
        num = float(inp)
    except:
        print 'Invalid input'
        continue                            

numbers = list(num)
minimum = None       
maximum = None

for num in numbers :                          
    if minimum == None or num < minimum :
        minimum = num

for num in numbers :        
    if maximum == None or maximum < num :
        maximum = num

print 'Maximum:', maximum
print 'Minimum:', minimum
为True时:
inp=原始输入('输入一个数字:')
如果inp==“完成”:
打破
尝试:
num=浮点(inp)
除:
打印“无效输入”
继续
数字=列表(num)
最小值=无
最大值=无
对于数字中的num:
如果最小值==无或数值<最小值:
最小值=num
对于数字中的num:
如果最大值==无或最大值<数值:
最大值=num
打印“最大值:”,最大值
打印“最小值:”,最小值
谢谢大家!

使用
num=float(inp)
只能分配一个数字,并且每次分配一个新数字时都会覆盖它。您必须先创建列表,然后每次都向其中添加数字。大概是这样的:

nums = []
while True:
  ...
  nums.append(float(inp))

你不应该需要一份清单。您应该只需要在运行时跟踪当前的最小值和最大值

minimum = None
maximum = None

while True:
    inp = raw_input('Enter a number: ')
    if inp == 'done': 
        break

    try:
        num = float(inp)
    except:
        print 'Invalid input'
        continue                            

    if minimum is None or num < minimum:
        minimum = num

    if maximum is None or num > maximum:
        maximum = num

print 'Maximum:', maximum
print 'Minimum:', minimum
最小值=无
最大值=无
尽管如此:
inp=原始输入('输入一个数字:')
如果inp==“完成”:
打破
尝试:
num=浮点(inp)
除:
打印“无效输入”
继续
如果最小值为无或num<最小值:
最小值=num
如果最大值为无或num>最大值:
最大值=num
打印“最大值:”,最大值
打印“最小值:”,最小值
输入设置=[]
输入数量=0
而(输入数量>=0):
input_num=int(输入(“请输入一个数字或-1以完成”))
如果(输入数量<0):
打破
输入集。追加(输入数)
打印(输入_集)
最大=输入_集[0]
对于范围内的i(len(输入_集)):
如果输入设置[i]>最大:
最大值=输入_集[i]
打印(“最大数字为”,最大)
最小=输入_集[0]
对于范围内的i(len(输入_集)):
如果输入设置[i]<最大值:
最小=输入_集[i]
打印(“最小的数字是”,最小的)
尝试以下代码:

 def max(data):
    l = data[0]
    s = data[0]
    for num in data:
        if num > l:
            l = num
        elif num < s:
            s = num
    return l, s
    print(max([0, 10, 15, 40, -5, 42, 17, 28, 75]))
def max(数据):
l=数据[0]
s=数据[0]
对于数据中的num:
如果num>l:
l=num
elif num
为什么if语句中需要“无”部分?在我看来,即使没有它也应该运行,因为类似If50>None(当最小值=None时)这样的东西工作得很好。您的示例引用了两个不同的东西<代码>50>无将在
最大值=无
时出现。虽然
50>None==true
是真的,
50
这将使
最小值未设置。IIRC,在引擎盖下,当您比较两个完全不相关的类型并且相应的比较函数(例如,
\uu gt\uuuuuuuu(self,rhs)
)未定义时,两个对象都将转换为它们的散列(请参见
散列
函数和
\uuuuuuhash(self)
特殊方法),并对它们进行比较。在我的框中,
hash(None)=-9223372036576818980
,对于任何整数
x
.TL,
hash(x)=x
;DR:当使用
None
来表示诸如“nil”、“NULL”或“undefined”之类的概念时,最好(也是最清楚的)对这些情况进行自己的比较(我更喜欢
还是
不是
而不是
==
!=
,这样操作符重载中的错误就不会咬到你)。
 def max(data):
    l = data[0]
    s = data[0]
    for num in data:
        if num > l:
            l = num
        elif num < s:
            s = num
    return l, s
    print(max([0, 10, 15, 40, -5, 42, 17, 28, 75]))