找到最小的输入数字

时间:2015-07-10 05:56:44

标签: python python-2.7

small = None
larg = None
count = 0

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

    try:
        num = float (inp)

    except:
        print "Invalid number"

    if num < small:
        small = num

print "Done"
print small

此代码应该让用户添加数字,直到他/她键入&#34; done&#34;然后找到最小的数字(我的想法是每次比较num和较小的数字,并在完成后打印最后一个小值)

但是当我运行它时,它会一直显示None作为最小值。

4 个答案:

答案 0 :(得分:2)

在Python 2.x中,None小于所有数字,因此,因为您的起始编号是None,所以它始终是最小的。

你可以检查一下None小是否用输入进行初始化(这应该将small设置为第一个输入的数字。)

示例 -

small = None
larg = None
count = 0

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

    try:
        num = float (inp)

    except:
        print "Invalid number"

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

print "Done"
print small

答案 1 :(得分:0)

您最初无法将small作为None值启动。否则你的状态

if num < small:

每次评估为False。因为您要将None值与浮点值进行比较,None小于每个数字。做这样的事情

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

答案 2 :(得分:0)

我可以建议这样的事情

input_list = []

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

    try:
        input_list.append(float(inp))
    except:
        print "Invalid number"
        continue

    smalest = min(input_list[-2:])
    print smalest

    input_list.append(input_list.pop(input_list.index(smalest)))

print "Done"

答案 3 :(得分:0)

这是一种相当简单的方法。我没有尝试通过在提示符中键入乱码来打破它,但我认为它可以正常工作。

var app = angular.module('myApp', ['googlechart'])
  app.controller('myController', function($scope, $log, $http) {

    $http.get("getCharts")
    .success(function(response) {
         metrics = response.data;
         var chart1 = {};
        chart1.type = "google.charts.Line";
        chart1.displayed = false;
        chart1.data = metrics;
        $scope.myChart = chart1;
     });
  }).value('googleChartApiConfig', {
    version: '1.1',
    optionalSettings: {
      packages: ['line'],
      language: 'en'
    }
  });