![](/img/trans.png)
[英]Python in Maya: main function calls other function while passing variables?
[英]Python main function never calls other functions?
我的任務是創建一個基本的計算器程序,該程序具有加,減,乘和除的選擇。 Main應該調用菜單,菜單應該顯示選擇,並且在顯示答案后程序應該返回菜單。
當我運行它時,菜單會正確顯示,並提示我選擇數學運算,但是當我輸入一個值(即使它是一個無效數字)時,程序將不執行任何操作並返回菜單。
def add(num1,num2):
num1, num2 = prompt()
return num1 + num2
def subtract(num1,num2):
num1, num2 = prompt()
return num1 - num2
def multiply(num1,num2):
num1, num2 = prompt()
return num1 * num2
def divide(num1,num2):
num1, num2 = prompt()
if num1 == 0 and num2 == 0:
print "Dividing zero by zero is undefined."
if num1 != 0 and num2 == 0:
print "Cannot divide by zero."
return float(num1) / num2
def prompt():
num1 = raw_input("Please enter the first value: ")
num2 = raw_input("Please enter the second value: ")
return (num1,num2)
def menu():
print "Basic Calculator"
print "1 - Add"
print "2 - Subtract"
print "3 - Multiply"
print "4 - Divide"
print "5 - Quit"
operation = int(raw_input("Please enter a value to choose from options above: "))
return operation
def main():
while True:
if menu() == 1:
answer = add(num1,num2)
print answer
elif menu() == 2:
answer = subtract(num1,num2)
print answer
elif menu() == 3:
answer == multiply(num1,num2)
print answer
elif menu() == 4:
answer == divide(num1,num2)
print answer
elif menu() == 5:
print "Thank you for using basic calculator"
print "Goodbye!"
break
else:
print "Invalid input"
if __name__=='__main__':
main()
我如何獲得主函數來調用加法,減法,乘法和除法函數,然后在選擇了選項5退出時中斷?
我會補充說我是python的新手。 感謝您提供的任何幫助!
您的錯誤主要是,請更改為:
def main():
while True:
operation = menu()
if operation == 1:
answer = add(num1,num2)
print answer
elif operation == 2:
answer = subtract(num1,num2)
print answer
# And so on
因為您在每個IF上調用menu(),所以每個輸入僅檢查一個IF。
編輯
刪除所有對函數的輸入: def add(num1,num2)
應該是def add():
因為它們返回值,所以不接受值。
我無法重現您描述的行為。 但是您的代碼不起作用,因為這樣的行
answer = add(num1,num2)
拋出錯誤:
$ python2 so.py
Basic Calculator
1 - Add
2 - Subtract
3 - Multiply
4 - Divide
5 - Quit
Please enter a value to choose from options above: 1
Traceback (most recent call last):
File "so.py", line 58, in <module>
main()
File "so.py", line 39, in main
answer = add(num1,num2)
NameError: global name 'num1' is not defined
您認為num1
和num2
來自哪里?
您調用了一個尚不存在的參數的函數: add(num1, num2).
在下面的代碼段中,尚未定義num1
和num2
因為它們是由函數prompt()
初始化的,而后者由其他函數( add()
, subtract()
等)調用。
def main():
while True:
if menu() == 1:
answer = add(num1,num2)
print answer
首先將num1
和num2
初始化,然后在后續調用中將它們用作參數。 刪除對其他函數中的hint()的調用。 在函數調用中使用它們之前,首先需要調用prompt()
:
def add(num1,num2):
return num1 + num2
...
def main():
while True:
if menu() == 1:
num1, num2 = prompt()
answer = add(num1,num2)
print answer
基本上,稍微修改一下思路。 你進入一個函數調用的參數,你的情況num1
與num2
傳遞到add(num1, num2)
應該已經被初始化。 也就是說,在將num1
和num2
傳遞給另一個函數(例如add(num1, num2).
之前,它們應該已經具有值add(num1, num2).
另外, raw_input()
返回一個字符串,因此您必須先將它們轉換為數值,然后才能進行數學運算。
print("Simple maths count")
num1 = int(input("What is your number?"))
for i in range (1, 20):
print (num1 * i)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.