打印范围内的20个随机数,检查奇数还是偶数



在过去的一周里,我一直在用这个作业自杀,我仍然感到困惑。我必须创建一个程序,让用户输入 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()

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

在这一行:

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

你的代码有几个问题。 但你已经很接近了。 我认为您可能只是在理解程序如何执行方面遇到问题。 底部的"main()"函数调用是第一个代码执行点。 用户提示可以很好地收集用户数据,但随后您只需定义两个函数,并且从未实际调用它们。 此外,您使用单词"random"作为变量名称,但它也被用作随机库的命名空间。 下面是一个固定版本...

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()

你最大的疏忽可能是用你选择的第一个随机数来隐藏你导入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()

我会把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()

尝试:

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])

最新更新