Python 谁能帮我查一下这个密码吗

Python 谁能帮我查一下这个密码吗,python,python-3.x,Python,Python 3.x,这个代码是为了给人的选择,给平均值,中位数,模式或退出,但我不能让选项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

这个代码是为了给人的选择,给平均值,中位数,模式或退出,但我不能让选项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教程


因为我不认为这是一个家庭作业,但只是一些试图学习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()
。此函数的逻辑如下所示:

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
虽然没有这样做:

  • 要求用户输入一个数字
  • 检查它是否为有效输入
  • 将有效输入追加到列表中
  • 我们已经了解了如何要求用户输入,但是,与上次只有数字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()

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


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

    您应该首先清理代码示例。if-elif块中有一个函数定义(缩进错误)。代码中有很多错误。
    ans1=ans1
    ans2=ans2
    应该做什么?那num1*num2,num3,num4,num5,num6,num7,num8,num9,num10呢。它将只乘以前两个元素并返回一个元组。。。错误还在继续,我们可以提供帮助,但这意味着我们必须从Python的基础知识开始。有一个建议。专业提示:你几乎可以肯定你的标题是-5,这是100%的乞讨和0%的问题描述(我没有投票,为了它的价值)。嗨,Jurgy,我尝试了你的代码,但是我在第15行有一个错误。如果你告诉我你的第15行是什么,那会有所帮助,因为我的答案中的代码不是一个blob。此外,知道准确的错误会很有用。谢谢你的帮助,我只是想知道为什么它只打印数字,而不给我一个平均值
    def showAverageMenu():
      print("***Averaging***")
      inputList = getInput()
      avg = sum(inputList) / len(inputList))
    
      print("The Average of")
      print(inputList)
      print("is: {}\n".format(avg)