【问题标题】:how do you generate 20 random numbers in python你如何在python中生成20个随机数
【发布时间】:2014-02-01 16:07:00
【问题描述】:

我正在尝试在 python 中生成 20 个随机数并说出它们是奇数还是偶数,这是我目前所拥有的:

import random

def main():

    i = 0
    num = 0

    #while loop
    while i<20:

       #user enters input
        num = random.randint(input("enter lowest number:\t"))
        i = random.randint(input("enter highest number:\t"))

        #if else
        if num>=0 and num<=100:

            num = num+i

            i = i +1

            print(num)

        else:
            print("error")

        #for loop
        for i in range(num):


main()

如果我完全迷路了,谁能帮我完成它

问题来了:

编写一个程序,生成 20 个随机整数并指示每个数字是奇数还是偶数。程序应该首先要求用户输入两个整数,作为生成 20 个随机整数的范围。

【问题讨论】:

标签: python random integer


【解决方案1】:

使用list comprehension

import random
lower = int(raw_input("enter lowest number:\t"))
greater = int(raw_input("enter highest number:\t"))
print [random.randint(lower, greater) for a in range(100)]

【讨论】:

  • 如果你在 Python 2.x 上运行,请使用 raw_input
  • 对不起,从 OP 的内容中复制意大利面,谢谢@Matthias
【解决方案2】:

我宁愿完全重写那个函数

import random


def main():
    lower = int(raw_input("enter lowest number: "))
    upper = int(raw_input("enter highest number: "))
    for i in range(20):
        num = random.randint(lower, upper)
        print(num)
main()

我认为您将能够轻松修改它以满足您的需求:)

编辑:按照建议,我重写了函数,因此它不会在 for 循环的每一步都要求下限和上限,而在进入 for 循环之前只要求一次。这不那么烦人,而且可能是您想做的事情。

【讨论】:

  • 使用此功能,每次循环运行时,您都必须输入最低/最高数字。
  • 你如何让你第一次输入2个数字的循环连续,它会给你20个随机数??
  • user3250465:我只是按照 IanAuld 建议的方式重写了它
  • 谢谢 :) 你知道每个数字是偶数还是奇数吗??
  • 如何判断一个数是奇数还是偶数?如果将一个数除以 2,余数为 0,则该数是偶数。现在去编码吧。
【解决方案3】:
def odd_or_even(num):
    if num % 2 == 0:
        print(num, 'is even')
    else:
        print(num, 'is not even')

lst = [random.randint(lower, upper) for x in range(20)]
for num in lst:
    print(even_or_odd(num))

这是一个有效的程序,但如果你懒得弄清楚这一点,我怀疑你会非常喜欢这门课,因为它只会变得更加困难。

【讨论】:

  • 公平点。我相信0被认为是偶数。我错了吗? mathforum.org/library/drmath/view/57188.html
  • @Floris:绝对零是偶数!由于1 未通过num % 2 == 0 测试,因此根本不需要if 语句中的第一个分支。
【解决方案4】:
import random
import time

start = time.time()
for i in range(10000):
    random.choice([i for i in range(1000)])
print 'random.choice()', time.time() - start

start = time.time()
for i in range(10000):
    random.randint(0,1000)
print 'random.randint()', time.time() - start

start = time.time()
for i in range(10000):
    int(random.random() * 1000)
print 'random.random()', time.time() - start

[出]:

random.choice() 0.849874973297
random.randint() 0.015105009079
random.random() 0.00372695922852

【讨论】:

  • 这是什么答案?
【解决方案5】:

首先询问用户顶部和底部的数字, 然后使用生成器获取数字。

import random

def randnums(number, startnum=0, endnum=100):
    for i in range(1, number + 1):
         yield random.randint(startnum, endnum)

def getparams():
    return int(input('Lowest number: ')), int(input('Highest number: '))

def main():
    bottom, top = getparams()
    nums = list(randnums(20, startnum=bottom, endnum=top))
    for number in nums:
        print(number, ',', sep='')
if __name__ == '__main__':
    main()

【讨论】:

    猜你喜欢
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 2013-11-13
    • 2021-10-13
    相关资源
    最近更新 更多