题目:
堆里有 16 颗豆子,有两个玩家(假设一个玩家是电脑) 。每个玩家都可以从堆中的 16 颗豆子中取出 1 颗,2 颗或者 3 颗豆子。每个玩家在每回合中必须从堆中取出一定数目的豆子。玩家轮流取出豆子,取到最后 一颗豆子的玩家是输家。 思路: 写一个人取豆子的函数 ; 帮电脑设计一个算法,实现取豆子的函数 ; 在主程序中进行输流调用,谁最后拿到 1 粒豆子谁就输。
源代码:
import random
#人类取豆子
def people(n):print('-' * 30)while 1:pick_people = int(input("人类玩家取出豆子数: "))if (1 <= pick_people <= 3):breakelse:print("每次取出的豆子数应该属于(1,2,3),请重新输入!")continueprint("豆子剩余数量:", n - pick_people)return (n - pick_people)
#电脑取豆子
def computer(n):print('-' * 30)pick_computer = random.randint(1,3)print("电脑玩家取出豆子数:", pick_computer)print("豆子剩余数量:", n - pick_computer)return (n - pick_computer)
def main():total = 16print("豆子的总数为:",total)while 1:total = people(total)if total <= 0:print("电脑赢!!!")breaktotal = computer(total)if total <= 0:print("人类赢!!!")break
main()