【问题标题】:Python - How to pass a variable from one method to another in Python?Python - 如何在 Python 中将变量从一种方法传递到另一种方法?
【发布时间】:2018-03-31 16:50:08
【问题描述】:

我四处寻找这样的问题。我见过类似的问题,但没有什么能真正帮助我。我正在尝试将选择变量从方法 rollDice() 传递给方法 main()。这是我到目前为止所得到的:

import random
import os
import sys

def startGame():
     answer = input('Do you want to play Super Dice Roll?\nEnter 1 for Yes\nEnter 2 for No\n'
     os.system('cls')
     if (answer == '1'):
          rollDice()
     elif(answer == '2'):
          print('Thank you for playing!')
     else:
          print('That isn/t a valid selection.')
          StartGame()

def rollDice():
     start = input('Press Enter to roll dice.')
     os.system('cls')
     dice = sum(random.randint(1,6) for x in range (2))
     print('you rolled ',dice,'\n')
     choice = input('Do you want to play again?\nEnter 1 for Yes\nEnter 2 for No.\n)
     return choice

def main():
     startGame()
     while (choice == '1'):
          startGame()
     print('Thank you for playing')

print('!~!~!~!~WELCOME TO SUPER DICE ROLL~!~!~!~!~\n')
main()

我知道我这里可能还有其他多余的东西,或者我可能需要修复,但我现在只是在处理这个问题。我不确定如何将选择变量传递给 main() 方法。我尝试将选择 == rollDice() 放在 main() 方法中,但没有奏效。我主要做 SQL 工作,但想开始学习 Python,我发现一个网站有 5 个初学者任务,但几乎没有说明。这是任务一。

【问题讨论】:

  • 您的输入(用于 rollDice)缺少 '
  • 如果这是任务 1 并且没有说明,我会推荐另一个站点
  • @depperm,是的,你是对的。代码在另一台机器上,我只是把它打出来,错过了那部分。但是,我确实包括在内。是的,我知道尝试另一个网站。我只是觉得我必须做的研究越多,我学到的就越多。

标签: python function variables methods


【解决方案1】:

您需要将函数的返回值放入一个变量中才能对其进行评估(我还纠正了您代码中的一些错误,主要是拼写错误):

import random
import os

def startGame():
    answer = input('Do you want to play Super Dice Roll?\nEnter 1 for Yes\nEnter 2 for No\n')
    os.system('cls')
    while answer == '1':
        answer = rollDice()
    if answer == '2':
        print('Thank you for playing!')
    else:
        print('That isn/t a valid selection.')
        startGame()

def rollDice():
    input('Press Enter to roll dice.')
    os.system('cls')
    dice = sum(random.randint(1,6) for x in range (2))
    print('you rolled ', dice, '\n')
    choice = input('Do you want to play again?\nEnter 1 for Yes\nEnter 2 for No.\n')
    return choice

def main():
    print('!~!~!~!~WELCOME TO SUPER DICE ROLL~!~!~!~!~\n')
    startGame()
    print('Thank you for playing')


main()

【讨论】:

  • 感谢您的回答。这让我想到另一个问题:如果我在 main() 中声明选择 = '1',那么无论用户输入什么,它不会总是以 '1' 结束吗?如果用户选择不再播放并选择“2”怎么办?
  • choice='1' 只是第一次启动游戏的默认值。在选择 = startGame() 中,变量被实际用户输入覆盖,然后在下次运行 while 循环时使用。
  • 如果你能接受我的回答,我将不胜感激(投票按钮下方的复选标记)。谢谢。
  • 好的。我试过了,我不得不调试。当我逐步运行它时,它一直很好,直到我选择“2”作为用户输入。它选择了 IF 语句的正确路径,然后当它打印“谢谢你玩!”时它存储了“2”以供选择。但随后它返回到 while 循环并检查选择的值并确定选择等于“1”。我不确定它是否将输入值传递给main。我在想,也许是因为它没有传递值“2”,所以当它返回到 main 时,它会保留它已经知道的选择实例为“1”?
  • @AP1:我已经更新了我的答案。现在它可以正常工作了。之前的结构对于这项任务来说太复杂了。所以我更加简化了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-29
  • 2020-06-18
  • 2022-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多