感谢您对此代码的帮助。我正在尝试使用函数来打印结果。该程序采用随机数并确定它们是偶数还是奇数。这样可行。然后应该给出一个数字奇数和多少数是偶数的统计数。
我正在尝试将其构建到“tally_status_count”函数中,但无法使其工作。我最初将'even_total'和'odd_total'变量设置为全局变量,但后来尝试将它们移动到函数中。
我迷路了。任何帮助将不胜感激。
此致
代码:
import random
even_total = 0
odd_total = 0
def main():
print 'Number\tStatus'
print'______________'
for count in range (10):
number = random.randint(1, 10)
status = odd_even(number)
print number, '\t', status
tally_status_count(odd_even)
#Function to determine odd or even status
def odd_even(number):
if (number % 2) == 0:
status = 'Even'
else:
status = 'Odd'
return status
#Function to tally odd and even counts
def tally_status_count(odd_even):
even_total = 0
odd_total = 0
for status in range (status):
if status == 'Even':
even_total = even_total + 1
else:
odd_total = odd_total + 1
print
print 'The total count of even numbers is: ', even_total
print 'The total count of odd numbers is: ', odd_total
main()
答案 0 :(得分:1)
import random
def main():
even_total = 0
odd_total = 0
for i in xrange(10):
nbr = random.randint(1,10)
if nbr % 2 == 0:
even_total += 1
else:
odd_total += 1
print 'even total', even_total
print 'odd total', odd_total
if __name__ == "__main__":
main()
这听起来像是家庭作业。具体要求是什么?你需要将计数器和odd_even分成单独的函数吗?如果你不这样做会更容易。他们需要接受什么论据?他们有什么回报?
从这个odd_even
函数返回一个字符串很奇怪。字符串很难看。我写了一个函数:
def is_even(nbr):
return nbr % 2 == 0
相反。如果您愿意,tally
函数可以返回元组(even_count, odd_count)
。它应该接受一个函数和一个列表作为参数。
像这样:
import random
def is_even(nbr):
return nbr % 2 == 0
def tally(func, iterable):
yes = 0
no = 0
for x in iterable:
if func(x):
yes += 1
else:
no += 1
return (yes, no)
def main():
even_total, odd_total = tally(is_even, xrange(10))
print 'even total', even_total
print 'odd total', odd_total
if __name__ == "__main__":
main()
将总计移动到函数中并不适合您,因为它们仅限于函数的范围。函数存在后,它们就不复存在了。你必须返回它们,或者将它们保存为全局变量/在更高的范围内定义它们(你也可以编写一个类)。
答案 1 :(得分:1)
我发现您的代码存在一些问题。
问题1:tally_status_count接受一个从未使用过的参数。这没什么不对,但这很奇怪,这意味着你可能不确定如何做你想做的事。
问题2:tally_status_count使用一个不存在的变量“status”。我猜你可能希望将状态作为参数传递给函数。在这种情况下,函数定义应如下所示:
def tally_status_count(status):
当您修复问题2时,您最终遇到问题3,即......
问题3:格式错误的for循环。这样:
for status in range (status):
是胡说八道,不会奏效。 range()是一个函数,它接受一些整数并返回一个整数列表。如果'status'是一个字符串,则不能将其与range()一起使用。
问题4:您只获得最后一个随机数的状态,而不是所有随机数的状态。每次运行此行:
status = odd_even(number)
状态的旧值被丢弃。
这可能是您意味着编写的代码:
import random
even_total = 0
odd_total = 0
def main():
print 'Number\tStatus'
print'______________'
statuses = [] #the status for each random number is added to this list
for count in range (10):
number = random.randint(1, 10)
current_status = odd_even(number)
print number, '\t', current_status
statuses += [current_status] #add to the list
tally_status_count(statuses) #go through the list and total everything up
#Function to determine odd or even status
def odd_even(number):
if (number % 2) == 0:
status = 'Even'
else:
status = 'Odd'
return status
#Function to tally odd and even counts
def tally_status_count(statuses):
even_total = 0
odd_total = 0
for status in statuses:
if status == 'Even':
even_total = even_total + 1
else:
odd_total = odd_total + 1
print
print 'The total count of even numbers is: ', even_total
print 'The total count of odd numbers is: ', odd_total
main()