簡體   English   中英

將信息從功能的一部分轉移到另一部分時出現問題

[英]Problems transferring information from one part of a function to another

在我的程序上工作時,我遇到了一個問題,即菜單選項1中存儲的信息沒有轉移到菜單選項2中。如您所見,當在菜單一中時,信息已正確存儲。 當它返回到菜單選項2時,就像從未去過選項1一樣。

更新#1:我的一些建議是了解范圍? 根據我的判斷,即使我在每個定義中都鍵入return,程序也不會將數據傳遞給其父程序。

#Must be able to store at least 4 grades
#Each class can have up to 6 tests and 8 hw's
#Weighted 40%*testavg 40% hw average attendance is 20%
#User must be able to input a minimum grade warning
#after each test the your program must calculate the students average and issue warning if necessary

##Define the Modules##
import math

def menu (a): #2nd thing to happen 
    menuend = 'a'
    while menuend not in 'e':
        menuend = raw_input("Type anything other then 'e' to continue:\n")
        print "What would you like to do ?"
        menudo = 0
        print "1 - Enter Courses\n2 - Select Course to Edit\n3 - Save File\n4 - Load File\n5 - Exit\n"
        menudo = input("Enter Selection:")
        if (menudo == 1):
            menuchck = 0
            menuchck = raw_input("\nYou have entered #1 (y/n)?:\n")
            if menuchck in ["Yes","yes","y","Y"]:
                x = m1()
            else:
                print "I'm sorry,",nam,",for the confusion, lets try again\n"
                menu()
        elif (menudo == 2):
            menuchck1 = 0
            menuchck1 = raw_input("\nYou have entered #2 (y/n)?:\n")
            if menuchck1 in ["Yes","yes","y","Y"]:
                x = m2()
            else:
                print "I'm sorry,",nam,",for the confusion, lets try again\n"
                menu()
        elif (menudo == 3):
            print "Entered 3"
        elif (menudo == 4):
        print "Entered 4"
        else:
            print "Anything Else Entered"

def course(): #3rd thing to happen 
    b = {}
    while True:
        while True:
            print "\n",name,", please enter your courses below ('e' to end):"
            coursename = raw_input("Course Name:")
            if (coursename == 'e'):
                break
            will = None
            while will not in ('y','n'):
                will = raw_input('Ok for this name : %s ? (y/n)' % coursename)
            if will=='y':
                b[coursename] = {}
        print "\n",name,", current course load:\n",b
        coursechck = None
        while coursechck not in ('y','n'):
            coursechck = raw_input("Are your courses correct (y/n)")
        if coursechck =='y':
            return b
        else:
            b = {}
            print

##Menu Options##
def m1():
    a = course()
    return a

def m2():
    print "Excellent",name,"lets see what courses your enrolled in\n"
    print x
    return x

###User Input Section###
name = raw_input("Enter Students Name:\n")
a = {}
menu(a)

raw_input("This is the end, my only friend the end")

在do == 1情況下的if-elif塊中,您編寫m1() ,而在最后一種情況下,您編寫x=m1() 您應該到處都有后者(通過鍵入m1()您只能運行該函數,但不將返回的x存儲在任何地方)。

順便說一下,您可以if chck in ["Yes","yes","Y","y"]:使用if chck in ["Yes","yes","Y","y"]:來避免if-elif混淆if chck in ["Yes","yes","Y","y"]:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM