我们被分配在学校制作一块石头,纸,剪刀,蜥蜴,麻雀游戏(编程简介)。 我在获取代码以打印def handResult中的文本时遇到问题。 问题是:
如果我在第105行有print(handResult(playerHand,敌人的手)) 将打印例如“ Rock粉碎Lizzard。玩家获胜!”但它 也会打印“ 2”(因为我使用了return函数 保持结果得分)。
如果我在第105行上没有print(handResult(playerHand,敌人的手)) 它不打印返回函数(0,1,2),但也不打印 打印其他文本(““岩石压碎了蜥蜴。玩家获胜!”)
所以我的问题是: 如何获取文本以打印文本(“ Rock压碎Lizzard。玩家获胜!”),却没有返回数字?
很抱歉,关于圆键的解释-我对所有这些都是新手,所以我不知道如何正确解释。
答案 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