【问题标题】:How to return an argument if a certain condition is met in a loop?如果在循环中满足某个条件,如何返回参数?
【发布时间】:2017-08-12 01:10:16
【问题描述】:
import random


def lottery(lucky_numbers, run):
    i = 0
    while i < run:
        x = random.uniform(0, 1) #prints out a random number between 0 and 1
        numbers = lucky_numbers
        NewNumbers = numbers[-1:] + numbers[:-1] #shifts each element in the to the right
        lucky_numbers = NewNumbers
        print(lucky_numbers, x)
        i += 1

lottery([1, 2, 0], 3)

这段代码打印出如下内容:

>>>>>>>>>>
[0, 1, 2] 0.33016179294984127 
[2, 0, 1] 0.7797639530009745
[1, 2, 0] 0.6292245916315391
>>>>>>>>>>

x 值总是不同的,因为它们是 0 到 1 之间的随机数。

我正在尝试添加一个函数,如果 x 是循环中的最小值(min),那么程序应该打印该迭代的列表,例如在这种情况下,此循环中 x 的最小值是 0.33016179 .. ,因此程序应该打印列表 [0, 1, 2]

【问题讨论】:

  • 以人类的身份逐步完成这项工作——你将如何完成这项任务?你能用 Python 编写代码吗?

标签: python list for-loop while-loop min


【解决方案1】:

我只是将信息保存在一个变量中并在循环结束后打印它:

import random

def lottery(lucky_numbers, run):
    i = 0
    min_x = 1
    while i < run:
        x = random.uniform(0, 1) #prints out a random number between 0 and 1           
        numbers = lucky_numbers
        NewNumbers = numbers[-1:] + numbers[:-1] #shifts each element in the to the right
        lucky_numbers = NewNumbers
        if x < min_x:
            min_x = x
            min_lucky_numbers = lucky_numbers
        i += 1        
    print(min_lucky_numbers, min_x)

lottery([1, 2, 0], 3)

【讨论】:

    【解决方案2】:

    您可以创建一个“缓存”来存储所有x 值,然后调用最低值。

    cache = []
    for _ in range(3):
        x = random.uniform(0, 1)
        cache.append(x)
    print min(cache)
    

    【讨论】:

      【解决方案3】:

      要做你想做的事,你只需将你的项目存储在两个不同的列表中,对它们进行排序并显示每个列表的第一个元素:

      import random
      
      luckiest_num = list()
      luckiest_list = list()
      def lottery(lucky_numbers, run):
          i = 0
          while i < run:
              x = random.uniform(0, 1) 
              numbers = lucky_numbers
              NewNumbers = numbers[-1:] + numbers[:-1] 
              print(NewNumbers, x)
              i += 1
              luckiest_num.append(x)
              luckiest_list.append(NewNumbers)
      
      lottery([1, 2, 0], 3)
      luckiest_num.sort()
      luckiest_list.sort()
      
      print ("The luckiest item is : ")
      print(luckiest_num[0],luckiest_list[0])
      

      【讨论】:

        猜你喜欢
        • 2020-05-12
        • 1970-01-01
        • 2021-12-23
        • 2021-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-16
        • 2018-08-03
        相关资源
        最近更新 更多