Python中的强力球功能问题

时间:2018-12-05 09:05:14

标签: python

我的函数在if matches in ticket点之后的matches行处停止工作,将错误列为无效输入。这是什么原因,我该如何解决?我是Python的新手,因此非常感谢您的帮助。此外,此功能仍在开发中,我知道它目前效率很低,但是我试图在更改其他任何东西之前修复此错误。


import random

def matches(ticket, winner): 
    score = 0
    attemptnum = 0
    for number in ticket:
    if number in winner:
        score += 1
    return score
def winner():
  win1 == rand.randint(1, 69)
  win2 == rand.randint(1, 69)
  win3 == rand.randint(1, 69)
  win4 == rand.randint(1, 69)
  win5 == rand.randint(1, 69)
  win6 == rand.randint(1, 69)
  winner == 'win1 win2 win3 win4 win5 win6'
def playPowerBall():
    print('Please select your first unique number between 1-69.')
    def ticket():
      num1 = int(input('1st Number:'))
      if num1 in winner():
        score += 1
        matches += 1
      else:
        score += 0 
        matches += 0
      num2 = int(input('2nd Number:'))
      if num2 in winner():
        score += 1
        matches += 1
      else:
        score += 0 
        matches += 0
      num3 = int(input('3rd Number:'))
       if num3 in winner():
        score += 1
        matches += 1
      else:
        score += 0 
        matches += 0
      num4 = int(input('4th Number:'))
      if num4 in winner():
        score += 1
        matches += 1
      else:
        score += 0 
        matches += 0
      num5 = int(input('5th Number:'))
      if num5 in winner():
        score += 1
        matches += 1
      else:
        score += 0 
        matches += 0
      num6 = int(input('6th Number:'))
      if num6 in winner():
        score += 1
        matches += 1
      else:
        score += 0 
        matches += 0
      attempts = num1, num2, num3, num4, num5, num6
    for matches in ticket:
      score += 1
    else:
      score += 0      
    if matches in ticket:
      print('You picked at least ' matches 'winning numbers in 6 attempts, please claim your cash prize.')
    else: 
      print('You do not have a winning combination. Would you like to play Powerball again?')
      response = str(raw_input('Y/N:')):
      if response == 'Y':
        os.execl(sys.executable, sys.executable, *sys.argv)
      else:
        print('Thank you for playing.')
        sys.exit(0)

1 个答案:

答案 0 :(得分:1)

在阅读您的代码时,我正在学习一些东西:

  1. 您的缩进仍然存在,某些地方使用2个空格,其他地方使用4个-您需要来解决此问题,python严重依赖于缩进进行编译。
  2. 在函数winner中,您没有执行任何操作,双等号是test operator,并且不会进行任何赋值,如果 check 中的值win1等于随机生成的数字。
  3. 在同一函数中,您创建了一个变量winner,该变量包含一个包含字符win1 win2 ...的字符串,我只能假设您正在尝试创建一个包含这些win1变量的对象,例如您可以使用list,如下所示: winners = [win1, win2, win3, win4, win5, win6]
  4. 在同一函数中,您没有返回任何内容,因此该函数是无用的,为了将函数的输出发送回传到所谓的函数,您必须使用return(winners)

我不知道您打算在最大的playPowerBall函数中做什么,所以我将只讨论一些明显让您感到困惑的事情:

  1. def作为关键字定义一个函数,但不执行该函数,必须调用该函数才能运行。
  2. 就像我之前说的,要从函数中发送结果,您必须返回答案/结果。
  3. 我有一种直觉,不是看到invalid input,而是看到invalid syntax错误,因为您正在尝试检查整数matches是否在函数指针ticket中。这不是有效的语法,要进行函数调用,您必须使用括号,否则python认为您正在引用函数指针,因此matches in ticket()可能是有效的语法,但是正如您所定义的那样,我看不出如何处理工作。

此代码是否已正确编译或完全可以运行?我认为,在尝试构建这种复杂的东西之前,您需要返回关于函数定义的更多基本知识,从一个函数定义开始,然后尝试使其在一个小程序中运行,然后再回到这一点。

让我知道我还有什么可以帮助的。