Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何基于python中另一个随机选择的范围生成一组随机数_Python_Loops_Random - Fatal编程技术网

如何基于python中另一个随机选择的范围生成一组随机数

如何基于python中另一个随机选择的范围生成一组随机数,python,loops,random,Python,Loops,Random,我需要编写一个程序,生成一个名为file_size的随机整数,该整数介于4和7之间(含4和7),然后打印它们,但每个随机整数必须介于5和19之间(含5和19),并且是奇数。副本可以。总而言之,如果文件大小为6,则必须打印5到19之间的6个奇数。顺便说一下,我正在使用Python 3。这就是我到目前为止所做的: import random file_size = random.randint(4, 7) print("file_size = ", file_size) for _ in ra

我需要编写一个程序,生成一个名为file_size的随机整数,该整数介于4和7之间(含4和7),然后打印它们,但每个随机整数必须介于5和19之间(含5和19),并且是奇数。副本可以。总而言之,如果文件大小为6,则必须打印5到19之间的6个奇数。顺便说一下,我正在使用Python 3。这就是我到目前为止所做的:

import random

file_size = random.randint(4, 7)

print("file_size = ", file_size)

for _ in range(file_size):
   random_num = random.randint(5, 19)
   if random_num % 2 ==1:
       print(random_num)
示例运行的输出如下所示:

file_size =  5
19
11
15
7

这显然不是我要找的。请帮助。

您当前的代码非常接近。只需使用步骤为2的
randrange
,而不是
randint
。这不会生成任何偶数,因此您将获得正确数量的奇数。但是,您需要将上限增加1,因为
randint
包含上限,而
randrange
不包含上限,就像内置的
range
函数一样

random_num = random.randrange(5, 20, 2)

您当前的代码非常接近。只需使用步骤为2的
randrange
,而不是
randint
。这不会生成任何偶数,因此您将获得正确数量的奇数。但是,您需要将上限增加1,因为
randint
包含上限,而
randrange
不包含上限,就像内置的
range
函数一样

random_num = random.randrange(5, 20, 2)

您将循环运行
file\u size
次,但仅当随机生成的数字为奇数时才打印,这意味着您通常会得到比预期更少的结果。要获得随机奇数,您需要不断生成随机值,直到得到一个奇数,例如:

def random_odd(low, high):
  while True:
    ret = random.randint(low, high)
    if ret % 2 == 1:
      return ret
您可以根据需要对此进行调整,并编写单元测试来验证预期的随机生成行为。然后,在
文件大小
代码中使用此帮助程序:

for _ in range(file_size):
  print(random_odd(5, 19))

正如horns所建议的,它确实是您想要的函数,但通常情况下,helper函数模式是一个很好的后续模式-将代码的职责划分为多个部分,这样每个部分在概念上都更简单,并且可以独立验证。

您正在循环运行
文件大小
次,但只有当随机生成的数字为奇数时才会打印,这意味着您通常会得到比预期更少的结果。要获得随机奇数,您需要不断生成随机值,直到得到一个奇数,例如:

def random_odd(low, high):
  while True:
    ret = random.randint(low, high)
    if ret % 2 == 1:
      return ret
您可以根据需要对此进行调整,并编写单元测试来验证预期的随机生成行为。然后,在
文件大小
代码中使用此帮助程序:

for _ in range(file_size):
  print(random_odd(5, 19))

正如horns所建议的,这确实是您想要的函数,但通常情况下,helper函数模式是一个很好的后续模式-将代码的职责划分为多个部分,这样每个部分在概念上都更简单,并且可以独立验证。

现在,我不再将编写的数字打印到名为“numbers.txt”的文件中。在另一个文件中,我如何读取numbers.txt的内容,然后在自己的行上打印每个数字,然后打印总和?现在,我将数字写入名为“numbers.txt”的文件,而不是打印数字。在另一个文件中,我如何读取numbers.txt的内容,然后在自己的行上打印每个数字,然后打印总和?