从def打印的初学者问题

时间:2018-11-23 11:40:23

标签: python

我们被分配在学校制作一块石头,纸,剪刀,蜥蜴,麻雀游戏(编程简介)。 我在获取代码以打印def handResult中的文本时遇到问题。 问题是:

  • 如果我在第105行有print(handResult(playerHand,敌人的手)) 将打印例如“ Rock粉碎Lizzard。玩家获胜!”但它 也会打印“ 2”(因为我使用了return函数 保持结果得分)。

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

所以我的问题是: 如何获取文本以打印文本(“ Rock压碎Lizzard。玩家获胜!”),却没有返回数字?

很抱歉,关于圆键的解释-我对所有这些都是新手,所以我不知道如何正确解释。

1 个答案:

答案 0 :(得分:2)

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

但是您也有以下一行: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