5 回答

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊
正如前面的答案所指出的,您沒(méi)有將函數(shù)的返回值保存main_menu()在任何地方。但是您的代碼中還存在一些其他錯(cuò)誤,因此讓我們首先解決這些錯(cuò)誤。
您需要先定義函數(shù),然后才能使用它。您似乎試圖add_number同時(shí)調(diào)用該函數(shù)并定義它。首先定義你的函數(shù),然后像這樣調(diào)用它:
# Define the add_number() function
def add_number():
clean()
...
if main == 1:
# call the add_number() function
add_number()
您正在嘗試迭代一個(gè)數(shù)字,這將引發(fā)錯(cuò)誤。您可以嘗試使用range該函數(shù)來(lái)代替。
number = int(input("----->"))
for i in range(number): # using range function
...
您正在嘗試將名稱轉(zhuǎn)換為 int,但我假設(shè)您可能希望它是一個(gè)字符串。
# this will throw an ValueError if you type a name like "John"
c_n = int(input("Name-->"))
# This will not throw an error because you are not converting a string into an int
c_n = input("Name-->")
您的 try 塊正在捕獲SyntaxErrors,但您可能想要捕獲ValueErrors。語(yǔ)法錯(cuò)誤是代碼語(yǔ)法中的錯(cuò)誤,例如忘記了 a:或其他內(nèi)容。而值錯(cuò)誤是當(dāng)某些日期的值錯(cuò)誤時(shí)產(chǎn)生的錯(cuò)誤,例如當(dāng)您嘗試將字符串轉(zhuǎn)換為 int 時(shí)。
# replace SyntaxError with ValueError
except ValueError:
print("Oops something went wrong!")
最后,如果您想在輸入聯(lián)系號(hào)碼后返回菜單,則需要某種循環(huán)。
while(True):
# here we are saving the return value main_menu() function
choice = main_menu()
if choice == 1:
add_number()
# add other options here
else:
print("Sorry that option is not available")
此循環(huán)將顯示 main_menu 并詢問(wèn)用戶一個(gè)選項(xiàng)。然后,如果用戶選擇 1,它將運(yùn)行該add_number()函數(shù)。一旦該功能完成,循環(huán)將重新開(kāi)始并顯示菜單。
總而言之,看起來(lái)像這樣:
import pandas as pd
#list for containing telephone number
telephone = []
#list containing contact name
contact_name = []
def main_menu():
intro = """ ----------------------WElCOME to MyPhone-----------------------
To select the task please type the number corrosponding to it
1)Add New Number
2)Remove Contact
3)Access old contact
----> """
main = int(input(intro))
return main
def clean():
print("--------------------------------------------------------------------------------------")
def add_number():
clean()
try:
print("How many number(s) you want to add. Remember if you don't want to add any number just click enter",end="")
number = int(input("----->"))
for i in range(number):
c_n = input("Name-->")
t_n = int(input("Number-->"))
contact_name.append(c_n)
telephone.append(t_n)
else:
print("Contacts are Saved!??")
except ValueError:
print("Oops something went wrong!")
while(True):
choice = main_menu()
if choice == 1:
add_number()
# add other options here
# catch any other options input
else:
print("Sorry that option is not available")

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
變量main
僅在函數(shù)內(nèi)有效main_menu
。您需要將 的結(jié)果分配main_menu()
給某些東西才能使用它。
main = main_menu() if main == 1: ...

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊
當(dāng)您調(diào)用該函數(shù)時(shí),您需要將結(jié)果放入變量中(或以其他方式使用它)。
例如:
selection = main_menu()
函數(shù)內(nèi)部定義的變量在函數(shù)結(jié)束后消失;該return
語(yǔ)句僅返回值,而不是整個(gè)變量。

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
當(dāng)您調(diào)用該函數(shù)時(shí),它會(huì)返回 main,但是,必須將其分配給某個(gè)對(duì)象才能使用它執(zhí)行某些操作。僅調(diào)用該函數(shù)不會(huì)創(chuàng)建變量 main。這是因?yàn)楹瘮?shù)的范圍。
main = main_menu()

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
你的代碼中有很多錯(cuò)誤。def = 只聲明函數(shù)但不調(diào)用它。
首先,如前所述,您在調(diào)用 main_menu() 時(shí)需要執(zhí)行以下操作:
main = main_menu()
其次,在 if 中您應(yīng)該調(diào)用 adD_number 函數(shù):
if main ==1: add_number()
但請(qǐng)確保在調(diào)用之前聲明 add_number() (使用 def)。
祝你好運(yùn)!
添加回答
舉報(bào)