过去一周,我一直在用这项任务自杀,我仍然感到困惑。我必须创建一个程序,让用户输入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()
我不只是懒洋洋地要求一个解决方案,我真的已经用尽了我的努力,甚至联系了我的实验室导师以获得更多建议,但我仍然不知道为什么它不起作用。 感谢。
答案 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()