不知道如何使用创建的方法
我对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
我希望应用程序读取到处,如果用户键入“退出”将退出,即使它要求一个号码,以便我创建了2种方法来这样做,因为它不工作与循环和用户输入直接从主()处理
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
回答:
区分大小写,则定义Num1() & Num2()
不num1() & num2()
回答:
有很多你的代码错误。
DRY不要重复自己。当他们做同样的事情时,不需要有两个功能。完整删除Num2。没用的。
Num1没有返回值。我们希望函数向用户询问一个数字(它是这样做的),如果用户输入“exit”(也完成)并返回用户输入的数字(未完成),则退出。
函数名称以小写字母开头并且是描述性的。 Num1既不会,所以让我们将其更改为ask_number。
上述所有问题都可以通过用下面的ask_number函数替换Num1和Num2来解决。
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 = ask_number()
num2 = ask_number()
我们两次调用ask_number功能和指派其返回值NUM1和NUM2取代旧代码
Num1()
num1 = int.num1()
Num2()
num2 = int.num2()
修复它。
回答:
问题是Num1()和Num2()提出了问题,但没有对它们做任何事情。另外,定义的num1和num2是函数本地的变量,因此您无法通过main()函数访问它们。您应该添加“return numX”而不是break,并将num1()分配给num1,从而允许您将用户的输入捕捉到main()函数可访问的变量中。
这是你的代码应该看起来像:
import time def Num1():
while True:
num1=input("What is the first number? ")
if num1.isdigit():
return int(num1)
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")
def Num2():
while True:
num2=input("What is the first number? ")
if num2.isdigit():
return int(num2)
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")
def Operation(num_1, num_2):
# code for Operation function
pass
def main():
while True:
num1=Num1()
num2=Num2()
Operation(num1, num2)
if __name__=="__main__": main()
回答:
免责声明:我问了一些澄清,但我没有SO特权呢。
当您运行该程序时,您可以确保您的缩进是正确的吗?例如,你的while循环不应该和你的函数定义在同一个缩进级别上。
另外,你在这个文件中的所有功能SimpleCalculator.py
?如果是这样,你需要额外的一行来调用你的方法,因为现在他们只是被声明。
if __name__ == '__main__': # And the following line will call your main function which you defined previously
main()
更重要的是,只是删除您main()
功能,并与更Python语法替换:
if __name__ == '__main__': while True:
Num1()
Num2()
而且,由于你打电话Num1()
和Num2()
,他们正在处理的投入,你不需要设置num1 = int.num1()
或num = int.num2()
(这两者都给我错误)等等。如果你想有返回到处理上的主要方法的价值,您需要做的return num1
当您检查,并在你的主要方法设置firstNumberInput = Num1()
希望这有助于!
回答:
这可能只是因为你已经发布了你的代码并有遗漏,但有几点需要解决。
函数Num1和Num2不返回任何内容。虽然值num1是在函数内分配的,但它不能在该函数的范围之外访问。
INT没有一个方法“NUM1”所以调用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())
回答:
我看到一些一般性的错误,在你的代码:
- 你调用函数NUM1()进入NUM1,但NUM1是当地 变量。所以你只能在Num1()函数中看到并使用它。与num2相同的 。所以,我建议使用Num1和Num2,但是要返回num1 和num2。
- 我推荐使用1个函数,不需要使用2.
- 看起来像用num1 = int.num1()你想把num1()转换成int。这是错误的。正确将会像num1 = int(num1)一样。 这会将num1从字符串转换为int并将其保存为num1。但 最好使用字符串和int的不同名称:num1 = int(num1_str)。而当你使用括号num1()时,这意味着你需要调用 num1函数来完成。但是num1不是一个函数,所以它不是可调用的 。
- 您使用将字符串转换为int两次。在编程中,当你看到两个代码,它们只是复制/粘贴时,最好为它制作一个 函数。这里我们有这个函数,所以只需在函数中插入 转换为int即可。
- 不要忘记缩进。这是Python中最重要的东西。在其他语言中,您可以使用类似于{}的内容来定义某个逻辑块的开始和结尾。但在Python中,它全部取决于缩进。
因此,利用这一点,它可以像这样:
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
以上是 不知道如何使用创建的方法 的全部内容, 来源链接: utcz.com/qa/257484.html