我是建立在一个简单的毕达哥拉斯定理计算器,我写了一段时间回来,使一个更先进的版本作为介绍类和函数。我已经成功地将其编程为求解c,或者a或b,如果用户需要进行另一个计算,则返回计算函数。你知道吗
我最近尝试添加一个主菜单函数,因此如果用户需要解c,现在需要解b,他/她可以返回主菜单选择他们需要的选项。有点困难,我已经设法把它编码到它想去的地方
但是如果他们试图返回并选择另一个选项,它只会返回python提示符。我很难用语言来描述这个问题,因为其他事情也会出错。例如,如果执行的计算少于2次并尝试返回,则当前使用的方法将继续循环。我不知道为什么会发生这样的事,看来我做的一切都是对的。我试过排除故障,但如上所述,我的特殊情况很难描述。我确信我做得不对,我想知道怎么做。我的代码和截图附在下面。你知道吗
代码
' A Pythagoren Therom Calculator (v.2.0)
By: Anon_104'''
#imports
import time, math
#Welcome statement (Welcomes the user)
print("Welcome to the pythagorean theorem calculator!")
time.sleep(1)
#a class to organize and keep everything in order ;)
class pytha:
#custom function for solving for c
def cal():
global ques1
a = int(input('Please enter the "A" value: '))
b = int(input('Please enter the "B" value: '))
print("Calculating...")
time.sleep(1)
print('The "C" value is ')
c = math.sqrt(a*a + b*b)
print(c)
ques1 = str(input("Another Calculation? (y/n) Or return to main menu? (back)"))
#function for solving for a or b, given c
def cal2():
global ques2
var = input('Please input either the "A" or "B" value: ')
c = input('Please input the "C" value: ')
var2 = float(c)**2 - float(var)**2
ans = math.sqrt(var2)
print('The "A"/"B" value is {0}'.format(ans))
ques2 = str(input("Another Calculation? (y/n) Or return to main menu? (back)"))
def mainmenu():
global query1
query1 = input('Welcome to the main menu! Solve for "C" or "A"/"B"? (opt1/opt2)')
pytha.mainmenu()
#The loop and break code for function 1
if query1 == 'opt1':
pytha.cal()
while ques1 == 'y':
pytha.cal()
if ques1 == 'back':
pytha.mainmenu()
while query1 == 'opt1':
pytha.cal()
elif ques1 == 'n':
print("Quitting... ")
time.sleep(1.6)
quit
#The loop and break code for function 2
if query1 == 'opt2':
pytha.cal2()
while ques2 == 'y':
pytha.cal2()
if ques2 == 'back':
pytha.mainmenu()
while query1 == 'opt2':
pytha.opt2
elif ques2 == 'n':
print("Quitting... ")
time.sleep(1.6)
quit
这是我第一次在帮助板上问任何问题,所以如果我做得不对的话,请别客气。你知道吗
您不需要在末尾使用查询语句。在方法中包含对方法的调用,或者创建一个新的方法以返回主菜单。我还建议在处理可能的小数时使用float()而不是int(),但我没有改变这一点。你知道吗
你可以做更多的事情来清理这个。我把所有的东西都放在课堂上,把所有的东西都叫做自我什么的(). 你知道吗
我添加了.lower(),以备用户执行OPT1或OPT1时使用。你知道吗
我创建了一个在每次操作后调用的重新运行函数。它在第一次运行后自动转到这个位置。你知道吗
我还使用try/except作为输入,因为在调用int()时输入非数字字符会导致ValueError。相反,它现在将告诉用户输入一个数字并重试。你知道吗
对于quit,需要将其称为quit()。你知道吗
init在调用类时立即加载,这允许您执行一些操作来初始化它,例如包括导入、设置变量、打印消息和运行函数。这样就包罗万象了。你知道吗
最后,标准的做法是用大写字母开头类名(尽管不是必需的)。你知道吗
希望这能帮助您更好地了解如何使用类。你知道吗
编辑:
如果您想为您的工具构建一个自定义导入,以便在没有直接用户交互的情况下使用,您可以这样构建它:
然后可以将其导入另一个脚本。如果你的毕达格手稿毕达格,则将其导入为
然后像这样调用模块:
相关问题 更多 >
编程相关推荐