我是Python和编程的新手。我正在关注如何制作一个简单的计算器的youtube示例,但我想添加我的想法和功能。或多或少我想让它变得多才多艺。
这是我无法解决的问题。我不知道如何使用我创建的两种方法使其工作
def main():
while True:
Num1()
num1 = int.num1()
Num2()
num2 = int.num2()
# Executing the specified calculations with the 'Operation' function (row 13)
Operation(num1, num2)
# --> followed by another nested while asking if the user wants to make another calculation
我希望应用程序能够在任何地方读取,如果用户输入"退出"它会退出,即使它要求一个数字,所以我创建了两种方法,因为它没有直接处理来自main()的循环和用户输入
def Num1():
while True:
num1 = input("What is the first number? ")
if num1.isdigit():
break
elif num1 == 'exit':
print("Thank you using the SimpleCalculator. Bye!")
time.sleep(3)
exit()
else:
print("I don't understand. Please input a valid number")
continue
def Num2():
while True:
num2 = input("What is the second number? ")
if num2.isdigit():
break
elif num2 == "exit":
print("Thank you using the SimpleCalculator. Bye!")
time.sleep(3)
exit()
else:
print("I don't understand. Please input a valid number")
continue
问题在于我得到了这个错误而且我得到了它,但我不知道如何解决它。
Traceback (most recent call last):
File "C:/Users/Albert/PycharmProjects/HelloWorld - First Py'
Apps/SimpleCalculator.py", line 131, in <module>
main()
File "C:/Users/Albert/PycharmProjects/HelloWorld - First Py'
Apps/SimpleCalculator.py", line 109, in main
Operation(num1, num2)
NameError: name 'num1' is not defined
答案 0 :(得分:1)
我在您的代码中看到一些常见错误:
所以,使用它,它看起来像这样:
def main():
while True:
# just call NumEntering - one general function for entering numbers,
# and give to it attribute - message for user.
num1 = int(NumEntering("What is the first number? "))
num2 = int(NumEntering("What is the second number? "))
# Executing the specified calculations with the 'Operation' function (row 13)
Operation(num1, num2)
功能:
def NumEntering(message): # message - this what function get from outer function.
while True:
num_str = input(message) # show given message
if num_str.isdigit():
return int(num_str) # convert to int and return to outer function
elif num_str == 'exit':
print("Thank you using the SimpleCalculator. Bye!")
time.sleep(3)
exit()
else:
print("I don't understand. Please input a valid number")
continue
答案 1 :(得分:0)
区分大小写,您定义了Num1() & Num2()
而不是num1() & num2()
答案 2 :(得分:0)
您的代码存在很多问题。
干不要重复自己。当他们做同样的事情时,不需要有两个功能。完整删除Num2。这没用。
Num1未返回值。我们希望函数向用户询问一个数字(它确实如此),如果用户输入“exit”(也已完成)则退出并返回用户输入的数字(未完成)。
函数名称以小写字母开头,具有描述性。 Num1没有,所以让我们把它改成ask_number。
上面提到的所有问题都可以通过用以下ask_number函数替换Num1和Num2来解决。
$error = '';
if (!preg_match('/^(\.[a-z0-9]+|[a-z0-9]+\.([a-z0-9]*))$/i', $username)) {
$error = "Invalid Username";
}
if ($error) echo $error;
通过替换旧代码来修复它
def ask_number():
while True:
num = input("What is the first number? ")
if num.isdigit():
return int(num) #This line fixes problem 2
elif num == 'exit':
print("Thank you using the SimpleCalculator. Bye!")
time.sleep(3)
exit()
else:
print("I don't understand. Please input a valid number")
与
Num1()
num1 = int.num1()
Num2()
num2 = int.num2()
我们调用ask_number函数两次,并将其返回值分配给num1和num2。
答案 3 :(得分:0)
问题在于Num1()和Num2()问了问题,但没有对它们做任何事情。此外,定义的num1和num2是函数本地的变量,因此您无法从main()函数访问它们。你应该添加&#34;返回numX&#34;而不是中断并将Num1()分配给num1,这允许您在main()函数可访问的变量中捕获用户的输入。
这是你的代码应该是这样的:
%dw 1.0
%output application/java
---
{(payload)}
答案 4 :(得分:0)
免责声明:我要求澄清,但我还没有SO特权。
运行程序时,您能确保缩进正确吗?例如,您的while循环不应与函数定义位于相同的缩进级别。
此外,您是否在此文件SimpleCalculator.py
中执行所有操作?如果是这样,您将需要一个额外的行来调用您的方法,因为现在它们只是被声明。
if __name__ == '__main__':
# And the following line will call your main function which you defined previously
main()
更好的是,只需删除main()
函数并将其替换为更多Pythonic语法:
if __name__ == '__main__':
while True:
Num1()
Num2()
此外,由于您正在呼叫Num1()
和Num2()
并且他们正在处理输入,因此您无需设置num1 = int.num1()
或num = int.num2()
(两者都是给我错误)等。如果您希望将值返回到main方法进行处理,则在检查return num1
时,您需要执行if num1.isdigit():
,并在主方法集中firstNumberInput = Num1()
希望这有帮助!
答案 5 :(得分:0)
可能只是因为您发布了有遗漏的代码,但有几点需要解决。
Num1和Num2函数不返回任何内容。虽然值num1是在函数内分配的,但在函数范围之外无法访问它。
int没有方法&#34; num1&#34;所以调用int.num1()应该用int(num1())
替换创建2个几乎相同的函数为自己创造了更多的工作并使代码难以改变,你可以创建一个更通用的函数。
def getnum():
while True:
mynum = input("What is the first number? ")
if mynum.isdigit():
break
elif mynum == 'exit':
print("Thank you using the SimpleCalculator. Bye!")
time.sleep(3)
exit()
else:
print("I don't understand. Please input a valid number")
return mynum
def main():
while True:
num1 = int(getnum())
num2 = int(getnum())