有人能帮我查一下这个密码吗



此代码旨在为用户提供给出平均值、中位数、模式或退出的选项,但我无法让选项1-4正常工作,因为当他们选择该选项时会发生什么。

ans1=ans1
ans2=ans2
# define functions
def average(num1, num2, num3, num4, num5, num6, num7, num8, num9, num10):
"""This function adds two numbers"""
return total== num1, + num2, + num3, + num4, + num5, + num6, + num7, + num8, + num9, + num10 == ans1
total/ans1
def median(num1, num2, num3, num4, num5, num6, num7, num8, num9, num10):
"""This function subtracts two numbers"""
return total == num1 - num2 - num3 - num4 -  num5 - num6 - num7 - num8 - num9 - num10 == ans2
total/ans2
def mode(num1,  num2, num3, num4, num5, num6, num7, num8, num9, num10):
"""This function multiplies two numbers"""
return num1 *  num2, num3, num4, num5, num6, num7, num8, num9, num10
def quit():
quit()

# This gives the user the options in a menu format
print("Select operation.")
print("1.average")
print("2.median")
print("3.Mode")
print("4.quit")
#this is where the user enters the number for what the user wants done
choice = input("Enter choice 1,2,3,4: ")
#################################################################
#this then asks the user for the 10 numbers
num1 = int(input("Enter first number: "))
num2 = int(input("Enter second number: "))
num3 = int(input("enter third number: "))
num4 = int(input("enter fourth number: "))
num5 = int(input("enter fith number: "))
num6 = int(input("enter sixth number: "))
num7 = int(input("enter seventh number: "))
num8 = int(input("enter eights number: "))
num9 = int(input("enter ninth number: "))
num10 = int(input("enter tenth number: "))
print(num1)
print(num2)
print(num3)
print(num4)
print(num5)
print(num6)
print(num7)
print(num8)
print(num9)
print(num10)

if choice == '1':        
print (ans1, num1, num2, num3, num4, num5, num6, num7, num8, num9, num10)
def adding (num1, num2, num3, num4, num5, num6, num7, num8, num9, num10):
s = (num1 + num2 + num3 + num4 + num5 + num6 + num7 + num8 + num9 + num10)/10
print("this is what they add up to")
print(s)
return s
elif choice == '2':
print(ans2(num1, num2, num3, num4, num5, num6, num7, num8, num9, num10))
elif choice == '3':
print(num1,"*", num2, num3, num4, num5, num6, num7, num8, num9, num10,"=", multiply(num1, num2, num3, num4, num5, num6, num7, num8, num9, num10))
elif choice == '4':
quit()

因为我不认为这是家庭作业,只是有人试图学习一些Python,所以我将部分展示如何做到这一点。

首先,我们将把程序分成易于理解的函数,其基础将是showMenu()函数:

def showMenu():
while True:
print("Select operation.")
print("1.average")
print("2.median")
print("3.Mode")
print("4.quit")
userInput = input()

请注意,这个循环的条件总是True,因此不能转义。为了添加一些逻辑,我们必须解析用户输入:

def showMenu():
while True:
...
userInput = input()
if userInput == "1" or userInput == "2" or userInput == "3":
# Do something
elif userInput == "4":
exit()
else:
print("Invalid input, try again")

现在,如果用户输入4,并且他们输入了任何其他无效值,程序可以退出循环,程序只需再次显示菜单并要求用户输入一个值。现在,让我们填写输入为1、2或3时的部分。我们编辑if语句以将这些情况与这些情况分开,并创建一个新函数来处理它们:

if userInput == "1":
showAverageMenu()
elif userInput == "2":
showMedianMenu()
elif userInput == "3":
showModeMenu()
elif userInput == "4":
exit()
else:
print("Invalid input, try again")

好的,让我们下一步是创建showAverageMenu()函数。然而,我们首先必须讨论处理用户输入的方式。您这样做的方式是手动请求十个不同的输入值,并将它们存储在十个不同变量名下。如果我们希望用户输入15个值、30个值或100个值,该怎么办?这将需要大量重复编码。幸运的是,有一种更好的方法:我们将用户输入存储在列表中。此列表可以根据用户的需要而定。因为我们要求用户输入数字的方式在三种不同的操作中是相同的,所以我们将创建一个每次都可以调用的函数。此函数将被称为getInput()。这个函数的逻辑看起来是这样的:

未完成时:

  1. 要求用户输入数字
  2. 检查输入是否有效
  3. 将有效输入附加到列表

我们已经了解了如何要求用户输入,然而,与上次只有数字1到4有效不同,现在所有数字都是有效输入。此外,上次我们将输入作为字符串处理,但要计算平均值,我们需要整数值(或浮点值)。要将字符串转换为整数,我们可以强制转换输入:intValue = int(stringValue)。但是,如果用户没有输入数字,而是输入一些非数字字符,则函数会引发ValueError。为了处理这个问题,我们必须捕获错误。

单词够多了,让我们展示一些代码:

def getInput():
inputList = []
print("Please enter an integer")
while some_condition:
userInput = input()
try:
intValue = int(userInput)
inputList.append(intValue)
except ValueError:
print("'{}' is not an integer".format(userInput))

在这里,您可以看到,我们尝试将用户输入强制转换为整数,但如果失败,则会捕获ValueError,并立即提醒用户应该输入一个数字。还要注意,此函数从一个名为inputList的空列表开始,如果强制转换没有失败,该列表将填充整数值。最后,注意while循环的条件,到目前为止,它只设置为一些未定义的变量,但所需的行为是什么?首先,输入列表必须包含至少一个元素,其次,用户必须发出信号表示他们已经完成了值的输入。在代码中,这可以这样做:

def getInput():
userInput = None
inputList = []
print("Please enter an integer")
while userInput != "done" or len(inputList) == 0:
userInput = input()
...
print("'{}' is not an integer".format(userInput))
print("Please enter an integer")
if len(inputList) > 0:
print("Or type 'done' if you are finished")
return inputList

现在,我们首先将userInput设置为None,以便在条件中使用该变量。此外,如果输入列表为空,我们将继续循环。最后,如果输入列表确实包含数字,我们会告诉用户,他们可以键入"done"来退出循环,这反映在循环的条件中。如果用户完成,我们将返回列表。

现在我们已经创建了一个从用户检索输入的通用解决方案,我们必须定义实现操作的函数。让我们看看showAverageMenu():

def showAverageMenu():
print("***Averaging***")
inputList = getInput()
avg = sum(inputList) / len(inputList))
print("The Average of")
print(inputList)
print("is: {}n".format(avg)

正如你所看到的,解决方案真的很简单。我们所要做的就是计算平均值并打印出来。要计算平均值,我们可以使用内置的方法来计算列表的总和,然后将其除以列表的长度。

现在,其他两种方法有点难,但留给读者练习;)

我为您修复了代码的几个部分,并在注释中解释了我所做的事情。在这段代码中有几个问题需要修复,而我并没有全部修复。我解释了我所做的,所以你应该能够浏览并修复它们,但如果你有任何问题,请留下评论,我会尽可能多地解释。正如上面许多人所说,你应该学习python教程。Codecademy有一个相对不错的。

#You should declare these first to ensure that you have access to them throughout the program
num1 = int(input("Enter first number: "))
num2 = int(input("Enter second number: "))
num3 = int(input("enter third number: "))
num4 = int(input("enter fourth number: "))
num5 = int(input("enter fith number: "))
num6 = int(input("enter sixth number: "))
num7 = int(input("enter seventh number: "))
num8 = int(input("enter eights number: "))
num9 = int(input("enter ninth number: "))
num10 = int(input("enter tenth number: "))
print(num1)
print(num2)
print(num3)
print(num4)
print(num5)
print(num6)
print(num7)
print(num8)
print(num9)
print(num10)
#It looks like you are trying to use the variables above, so you don't need them as parameters.
#If you use them as parameters, the function will get confused and use the wrong ones.
def average():
"""This function adds two numbers"""
#Set total before you try to return it.
#When you create a variable, it's just 1 equal sign, it's 2 when you are checking if something is equal
#Also, never use 2 equal signs such as total = x == y
#When you are adding something, you don't need commas.
total = num1 + num2 + num3 + num4 + num5 + num6 + num7 + num8 + num9 + num10
#The return statement should be the last thing in a function
return total

def median():
"""This function subtracts two numbers"""
total = (num1 - num2 - num3 - num4 -  num5 - num6 - num7 - num8 - num9 - num10)/2
return total
#I'll let you take it from here.
def mode(num1,  num2, num3, num4, num5, num6, num7, num8, num9, num10):
"""This function multiplies two numbers"""
return num1 *  num2, num3, num4, num5, num6, num7, num8, num9, num10
def quit():
quit()

# This gives the user the options in a menu format
print("Select operation.")
print("1.average")
print("2.median")
print("3.Mode")
print("4.quit")
#this is where the user enters the number for what the user wants done
choice = input("Enter choice 1,2,3,4: ")

if choice == '1':        
print (ans1, num1, num2, num3, num4, num5, num6, num7, num8, num9, num10)
def adding (num1, num2, num3, num4, num5, num6, num7, num8, num9, num10):
s = (num1 + num2 + num3 + num4 + num5 + num6 + num7 + num8 + num9 + num10)/10
print("this is what they add up to")
print(s)
return s
#The first if statement should be an if statement, not an elif statement. Since this is a new function, it's a new if statement.
if choice == '2':
print(ans2(num1, num2, num3, num4, num5, num6, num7, num8, num9, num10))
elif choice == '3':
print(num1,"*", num2, num3, num4, num5, num6, num7, num8, num9, num10,"=", multiply(num1, num2, num3, num4, num5, num6, num7, num8, num9, num10))
elif choice == '4':
quit()

相关内容

最新更新