【问题标题】:Beginner issue with printing from def从 def 打印的初学者问题
【发布时间】:2019-04-26 00:39:11
【问题描述】:

我们被分配在学校制作石头、纸、剪刀、蜥蜴、spock 游戏(编程入门)。 我无法让我的代码打印我在 def handResult 中的文本。 问题是:

  • 如果我在第 105 行有 print(handResult(playerHand,enemyHand)) 它 将打印例如“岩石粉碎蜥蜴。玩家获胜!”但它 还将打印“2”(因为我使用的返回函数 它会记录结果)。

  • 如果我在第 105 行没有 print(handResult(playerHand,enemyHand)) 它不会打印返回函数 (0,1,2),但它也不会 打印其他文本(““岩石粉碎蜥蜴。玩家获胜!”)

所以我的问题是: 如何让它打印文本(““Rock crushes Lizzard。玩家获胜!”)但忽略返回编号?

很抱歉,我的解释很奇怪——我对这一切都很陌生,所以我不知道如何正确解释这些事情。

【问题讨论】:

标签: python


【解决方案1】:

问题是你在函数handResult中有一个print语句!每次调用该函数时,它都会打印出结果。

但你也有这行:print(handResult(playerHand, enemyHand))。 那是实际打印出由函数返回的数字的行。

解决这个问题的一种残酷方法是删除print(handResult(playerHand, enemyHand)) 中的打印,(只留下handResult(playerHand, enemyHand)),但这不是最优的,因为上面几行,在result = (handResult(playerHand, enemyHand)),程序仍然会打印出来一些东西(这是不想要的)。

解决方案是将整个打印结构移到上面,并删除包含print(handResult(playerHand, enemyHand)) 的行,因为result = (handResult(playerHand, enemyHand)) 行已经打印了您需要的内容。

下面的代码示例:

 if playerHand in validHands:
            # Selects random enemy hand
            enemyHand = random.choice(validHands)

            print(clearScreen)
            print("Round " + repr(round))
            print(separator)
            print("Your hand: " + hands[playerHand - 1])
            print("Enemy hand: " + hands[enemyHand - 1])
            print("")

            result = (handResult(playerHand, enemyHand))

            # Present results
            if result == 2:
                pScore += 1
            if result == +1:
                eScore += 1

            round += 1
            print("")
            printScore(pScore, eScore)
            print(separator, flush = True) # Flush = true  makes it so that it prints before sleeping

【讨论】:

  • 啊啊我不知道!这非常有效!非常感谢:)
  • 没问题!如果答案令人满意,请选择它作为接受的答案:)
猜你喜欢
  • 2020-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-04
  • 2020-11-23
  • 2015-03-16
  • 2012-04-15
  • 1970-01-01
相关资源
最近更新 更多