在范围内打印20个随机数,检查是否为奇数或偶数

时间:2014-02-03 23:50:28

标签: python function random return-value

过去一周,我一直在用这项任务自杀,我仍然感到困惑。我必须创建一个程序,让用户输入2个数字,按大小顺序排列,在范围内打印20个随机数,并确定它们是奇数还是偶数。这是我到目前为止所得到的:

#Main function
import random
def main():
    first = int(input("Enter first integer: "))
    second = int(input("Enter second integer: "))
    def sortnums(first, second):
        if first > second:
            return second, first
        else:
            return first, second
        MIN, MAX = sortnums(first, second)

    for x in range(20):
        random = random.randrange(MIN, MAX)
        if random%2 == 0:
            print ("The random number", random ,"is even.")
        elif random%2 != 0:
            print ("The random number", random ,"is odd.")
    return random

main()

我不只是懒洋洋地要求一个解决方案,我真的已经用尽了我的努力,甚至联系了我的实验室导师以获得更多建议,但我仍然不知道为什么它不起作用。 感谢。

5 个答案:

答案 0 :(得分:1)

在这一行:

random = random.randrange(MIN, MAX)

您已使用数字隐藏了random模块。您应该选择其他变量名称,例如random_number,以便后续调用random.randrange不会出现错误:

for x in range(20):
    random_number= random.randrange(MIN, MAX)
    if random_number % 2 == 0:
        print ("The random number", random_number, "is even.")
    elif random_number % 2 != 0:
        print ("The random number", random_number, "is odd.")
return random_number

答案 1 :(得分:0)

您最大的疏忽可能是使用您选择的第一个随机数隐藏了导入的random。在此之后,当程序尝试在int上查找randrange属性时,程序将第二次在循环中失败。

已经有一种很好的内置方法来排序数字

def sortnums(first, second):
    return sorted([first, second])

更简单地说,使用元组解包

import random
def main():
    first = int(input("Enter first integer: "))
    second = int(input("Enter second integer: "))
    for x in range(20):
        num = random.randrange(*sorted([first, second]))
        if num%2 == 0:
            print ("The random number", num ,"is even.")
        else:
            print ("The random number", num ,"is odd.")
    return

main()

您可以删除此处的打印功能重复

import random
def main():
    first = int(input("Enter first integer: "))
    second = int(input("Enter second integer: "))
    for x in range(20):
        num = random.randrange(*sorted([first, second]))
        print("The random number", num ,"is", "odd." if num%2 else "even.")
    return

main()

答案 2 :(得分:0)

您的代码存在一些问题。但你很亲密。我想您可能只是在理解程序的执行方式上存在问题。底部的“main()”函数调用是第一个代码执行点。用户提示正好收集用户数据,但是您只需定义两个函数,而不是实际调用它们。此外,您使用“随机”一词作为变量名称,但这也用作随机库的名称空间。以下是固定版本......

import random

def main():
    first = int(input("Enter first integer: "))
    second = int(input("Enter second integer: "))
    MIN, MAX = sortnums(first, second)

    for x in range(20):
        randNum = random.randrange(MIN, MAX)
        if randNum%2 == 0:
            print ("The random number", randNum ,"is even.")
        elif randNum%2 != 0:
            print ("The random number", randNum ,"is odd.")

def sortnums(first, second):
    if first > second:
        return second, first
    else:
        return first, second

main()

答案 3 :(得分:0)

尝试:

import random

min_input = int(input("Enter first integer: "))
max_input = int(input("Enter second integer: "))

if max_input<min_input:
    min_input, max_input=max_input, min_input

for i in range(20):
    rnd=random.randrange(min_input, max_input)    
    print 'The random number {} is {}.'.format(rnd, ('even', 'odd')[rnd%2])

答案 4 :(得分:0)

我会在主函数之外取def sortnums

import random

def sortnums(first, second):
    if first > second:
        return second, first
    else:
        return first, second

然后MIN,MAX分配似乎有错误的缩进... 并使用值重新分配随机(模块)。改变它的东西 喜欢r或数字。

def main():
   first = int(input("Enter first integer: "))
   second = int(input("Enter second integer: "))

   MIN, MAX = sortnums(first, second)

   for x in range(20):
       r = random.randrange(MIN, MAX)

       if r%2 == 0:
           print ("The random number", r ,"is even.")
       elif r%2 != 0:
           print ("The random number", r ,"is odd.")
    return r

main()