Python 从用户&;处获取数字;打印最大值和最小值(不使用内置功能)
我正在回顾一个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' :
- 读取数字列表,直到“完成”为止 进来了
- 输入“完成”时,打印 最大的和最小的 数字
- 它应该是而不是直接 使用内置函数max() 和min()
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]))