我无法对变量/列表进行排序,然后能够跨函数传输它们。我仍然是python的新手,我可能错过了一些非常基本的东西。但是我已经过了好几个小时。
我需要创建一个生成20个随机整数的程序,并指出每个数字是奇数还是偶数。我需要将两个原始整数按升序排序并将它们转移到random.randint函数但是遇到麻烦,任何帮助都会受到赞赏。
这是我到目前为止所做的。
import random
def userinput():
global number1
global number2
number1 = int(input("Enter First Integer: "))
number2 = int(input("Enter Second Integer: "))
userinput()
def numbersorting():
global both
both = [(number1),(number2)]
sorted(both)
numbersorting()
def random_gen():
global num
i = 0
for i in range(20):
num = random.randint(number1,number2)
def get_num():
return values.pop
def odd_even():
if num % 2 == 0:
print("Random Number", num, "is even")
else:
print("Random Number", num, "is odd")
odd_even()
random_gen()
答案 0 :(得分:1)
在这个问题上看起来并不是那么清楚你实际上想要做什么,但一般来说,使用全局是一种非常糟糕的做法。
但是,您可以使用返回instace所需值的方法: 如果您需要返回2个数字的用户输入,最好使用此方法:
def get_numeric_input(label):
try:
return int(input(label))
except NameError:
print "Please enter a number"
return get_numeric_input(label)
使用此功能,您可以从用户处获取数值。
使用它可以获得2个下一个值,例如
def get_user_input():
n = get_numeric_input("Enter First Integer: ")
m = get_numeric_input("Enter First Integer: ")
return [n, m]
现在你有一个函数可以返回用户的2个值,并使用list的排序方法对这些值进行排序
def get_sorted_values(l):
return l.sort()
检查有关在python https://jsfiddle.net/xczdcqx0/7/
中排序的信息使用您所描述的随机数是可以的,但也尝试在任何其他函数之外使用is_odd和is_even函数,您将能够重复使用它们更多次。
答案 1 :(得分:0)
尝试both.sort()
sorted
会返回一个新列表。
sort()
已经完成。
答案 2 :(得分:0)
你在找这样的东西吗?
我编辑了您的代码以使用我理解您的问题...
您希望用户输入2个数字来设置每个随机数的上限和下限。那么你想在该范围内生成20个随机数,并找出每个偶数或奇数?
get_num()
您当前的代码存在一些问题:
odd_even()
和random_gen()
函数,因为您可以在循环中执行这些操作。即使在我发布的情况下你甚至不需要static int computeMaxPath(int[] a, int self, int row) {
if (self >= a.length)
return 0;
else
return a[self] + Math.max(
computeMaxPath(a, self + row + 1, row + 1),
computeMaxPath(a, self + row + 2, row + 1));
}
static int computeMaxPath(int[] a) {
return computeMaxPath(a, 0, 0);
}
函数 - 你可以在用户输入之后将所有代码移动到。我只是把它留在那里,以显示我的意思,上面的第2点答案 3 :(得分:0)
from random import randint
def user_input():
number1 = int(input("Enter First Integer: "))
number2 = int(input("Enter Second Integer: "))
if number1 > number2:
number1, number2 = number2, number1
return number1, number2
def odd_even(num):
if num % 2 == 0:
print("Random Number " + str(num) + " is even")
else:
print("Random Number " + str(num) + " is odd")
def random_gen():
number1, number2 = user_input()
for i in range(20):
num = randint(number1, number2)
odd_even(num)
random_gen()
您通常希望尽可能避免使用全局变量。这只是一个很好的编程实践,因为如果你不仔细跟踪它们,它们会变得相当混乱并导致问题。至于排序你的两个整数,我认为if if语句是一种更加pythonic的做事方式。嗯,我认为至少更容易。此外,在Python中,您不需要声明for循环变量,因此行i=0
是不必要的。此外,我确信这是一项任务,但在现实生活中你会想要运行一个例外条款,你可以在其中说出像
while True:
try:
number1 = int(input("Enter First Integer: "))
number2 = int(input("Enter Second Integer: "))
break
except ValueError:
print("Oops! Try entering an integer!")
希望有所帮助!
答案 4 :(得分:0)
通过将变量传递给函数并从函数返回新值来避免全局变量。
import random
def userinput():
number1 = int(input("Enter First Integer: "))
number2 = int(input("Enter Second Integer: "))
return number1, number2
def numbersorting(nums):
return sorted(nums)
def random_gen(hi, lo):
return random.sample(range(hi, lo), 20)
def odd_even(num):
if num % 2 == 0:
print("Random Number %d is even" % num)
else:
print("Random Number %d is odd" % num)
nums = userinput()
sortnum = numbersorting(nums)
randoms = random_gen(*sortnum)
[odd_even(n) for n in randoms]
与原始功能名称保持一致。
您应该了解list.sort
和sorted
之间的区别。如果您有一个列表li
,那么li.sort()
就地排序,即它会改变原始列表并返回None
。所以return li.sort()
总是错的。另一方面,return sorted(li)
没问题,但只是sorted(li)
是一种浪费的排序,因为结果被抛弃了。