-7

我的 python 学校作业有问题,我不知道我做错了什么。我要么得到一个未定义的全局名称,要么如果我改变周围的东西,我会得到不同的 sythax 错误。我希望有人能够帮助我解决我做错的事情。

这是分配详细信息的图像: 在此处输入图像描述

def main():
  x = int(input("Give me integer #1: "))
  y = int(input("Give me integer #2: "))
  z = input("Give me a string: ")
  print("min:",min(x,y))
  print("max:",max(x,y))
  print("equal:",equal(x,y))
  print("is_even:",is_even(x))
  print("is_odd:",is_odd(x))
  print("format_dollar:",format_dollar(x))
  print("lab_grade:",lab_grade(x))
  print("is_unlucky:",is_unlucky(x))
  print("is_lucky:",is_lucky(x))
  print("pluralize:",pluralize(z)) 


#1 This function will figure out the min of 2 integer arguments and return the smaller one
def min(num1,num2):
    if num1 >= num2: return num1
    else: return num2

#2 This function will figure out the max of 2 integer arguments and return the smaller one
def max(num1,num2):
    if num1 <= num2: return num1
    else: return num2

#3 This function will figure out if the 2 numbers are equal
def equal(x,y):
    if x == y: True
    else: False

#4 This function will find out if the number is even
def is_even(num1,num2):
    is_even = x
    if x % 2 == 0: return ("True")
    else: return ("False")

#5 This function will find out if the number is odd
def is_odd(num1,num2):
    is_odd = x
    if x % 2 == 1: return ("True")
    else: return even

#6 This function will format the returned string
def format_dollar(num1,num2):
    x**('.2f')

#7 This function will fin out a lab grade
def lab_grade(x):
    lab_grade = int(raw_input("Enter the student's grade: "))
    if grade >= 90:
        return 'A'
    if grade >= 80:
        return 'B'
    if grade >= 70:

       return 'C'
    if grade >= 60:
        return 'D'
    else:
        return 'F'
#8 This will determine if the function is un_lucky
def is_unlucky(x):
    if x == 4:
        return ('True')
    if x == 13:
        return ('True')
    if x == 7:
        return ('True')
    else: ('False')
    print()


#9 This will determine if the function is lucky
def is_lucky(x):
    if x == 3:
        return ('True')
    if x == 4:
        return ('True')
    if x == 8:
        return ('True')
    if x == 7:
        return ('True')
    else:
        return ('False')


    print('')

#10 This function will pluralize
def pluralize(z):
    if not z:
        return plural
    print('')
main()
4

3 回答 3

3

你的is_even()is_odd()功能看起来evenly-odd..

好吧,那只是个玩笑.. 抱歉.. 但是您使用了两个不同的参数num1num2而您使用的变量x被分配给了一个未知变量is_even,我不明白那里在做什么?

于 2012-09-24T18:17:27.133 回答
0

如果我不得不猜测,我会说你所做的是一次编写所有 10 个函数,然后将整个混乱烧毁,看看它是否有效。在前半个小时用头撞它之后,你可能已经到了这样的程度,你只是随机改变东西,看看是否奇迹般地烟雾会消失。

由于这似乎是一项非常基本的任务,我将避免建议使用测试驱动开发之类的东西,但您可以通过采用更渐进的方法让您的生活更轻松。

首先从您的 main 开始并让它运行,以便您的所有函数调用都可以正常工作而不会产生错误,例如:

def main():
    x = int(input("Give me integer #1: "))
    y = int(input("Give me integer #2: "))
    z = input("Give me a string: ")
    print("min:", min(x, y))
    print("max:", max(x, y))
    print("equal:", equal(x, y))
    print("is_even:", is_even(x))
    print("is_odd:", is_odd(x))
    print("format_dollar:", format_dollar(x))
    print("lab_grade:", lab_grade(x))
    print("is_unlucky:", is_unlucky(x))
    print("is_lucky:", is_lucky(x))
    print("pluralize:", pluralize(z))

def min(x, y):
    return x

def max(x, y):
    return x

# Fill in all the other functions here in the same fashion.

main()

对所有函数执行相同的操作,只需返回传入的第一个参数。一旦获得它,您的代码就会运行而不会产生任何错误。逐个修复每个函数以返回正确的结果。让你的生活更轻松的一个技巧是将 main() (仅用于测试)破解为:

def main():
    #x = int(input("Give me integer #1: "))
    #y = int(input("Give me integer #2: "))
    #z = input("Give me a string: ")
    x = 5
    y = 8
    z = 'foobar'

    print("min:", min(x, y))
    print("max:", max(x, y))
    print("equal:", equal(x, y))
    print("is_even:", is_even(x))
    print("is_odd:", is_odd(x))
    print("format_dollar:", format_dollar(x))
    print("lab_grade:", lab_grade(x))
    print("is_unlucky:", is_unlucky(x))
    print("is_lucky:", is_lucky(x))
    print("pluralize:", pluralize(z))

这样您就可以快速运行程序,而无需每次都输入。一旦你让它运行良好,你就可以从输入前面删除注释并删除你的硬编码值并在 main() 不变的情况下将其提交。

返回 True/False 时,您应该使用实际的布尔值 True 和 False,而不是它们的字符串表示形式。此外,作为专门调用 elif 的作业,您可能应该使用 if/elif/else 语句,而不是像您的代码那样使用一堆谨慎的 if。

#9 This will determine if the function is lucky
#  x = number to test
# returns True if number is lucky, else False
def is_lucky(x):
    if x == 3:
        return True
    elif x == 4:
        return True
    elif x == 8:
        return True
    elif x == 7:
        return True
    else:
        return False
于 2012-09-24T19:32:14.893 回答
0

甚至改变:

def is_even(num1,num2):
    is_even = x
    if x % 2 == 0: return ("True")
    else: return ("False")

至:

def is_even(num1):
    if num1 % 2 == 0: 
        return ("True")
    else: 
        return ("False")

为什么?:

  • 你只需要一个输入
  • 你不应该使用全局 x
  • 您不应该将函数 is_even 设置为一个值。

是奇怪的,而 format_dollar 也有类似的问题。

于 2012-09-24T19:00:58.860 回答