0

我将不胜感激有关此代码的帮助。我正在尝试获取打印结果的功能。该程序采用随机数并确定它们是偶数还是奇数。这样可行。然后应该计算有多少奇数和多少偶数。

我正在尝试将其构建到“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()
4

2 回答 2

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

这听起来像家庭作业。具体要求是什么?你需要将tally-er 和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()

将总计移动到函数中对您不起作用,因为它们仅限于函数的范围。功能存在后,它们不再存在。您必须返回它们,或者将它们保留为全局变量/在更高范围内定义它们(您也可以编写一个类)。

于 2011-02-19T03:53:20.260 回答
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()
于 2011-02-19T04:09:23.273 回答