【发布时间】:2018-03-26 15:42:18
【问题描述】:
我正在构建一个简单的毕达哥拉斯定理计算器,这是我不久前写的,目的是制作一个更高级的版本,作为对类和函数的介绍。我已经成功地将它编程为求解 c,a 或 b,并在用户需要进行另一次计算时循环回计算函数。
我最近尝试添加一个主菜单功能,所以如果用户需要解 c,现在需要解 b,他/她可以返回主菜单选择他们需要的选项。遇到了一些困难,我设法将它编码到了它的位置
- 返回主菜单
- 用户选择了另一个选项
- 用户根据需要执行计算
- 1-3次重复成功
但是如果他们尝试返回并选择另一个选项,它只会返回到 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
P.S 这是我在帮助板上的第一个问题,如果我没有做对,请放轻松。
【问题讨论】:
-
这是很多代码。请尝试将其缩减为 minimal reproducible example,这仍然表明您正在寻求帮助。
-
您需要在以
pytha.mainmenu()开头的代码周围放置一个循环。此外,您的行quit不会做任何有用的事情,如果您想退出脚本,请调用quit(),但如果您只想退出该循环,那么您应该使用不同的名称作为 quit is a builtin。跨度>