综合程序——石头剪刀布的游戏
下面我们来编写一个石头剪刀布的游戏,这里用到了循环和分支结构。
小P 来解决
Q:让用户玩家和计算机玩家进行石头剪刀布的游戏。
要求:分别出石头、剪刀、布中的一个,根据不同的情况定出胜负。
小P 想:
首先要解决输入问题,包括玩家输入,计算机则自动产生;
其次要解决胜负判定,可以分成不同的情况,用分支结构来实现;
最后要设计程序执行的次数,是否一直执行,还是根据用户的选择,可以用循环和条件语句实现。
具体问题分析及解决如下,包括数据的输入和程序流程的控制。
1.数据的输入
数据的输入包括玩家输入,计算机则自动产生。
玩家输入可以采用input()函数。
计算机需随机自动产生,我们导入random模块中的生成整数的randint()函数,然后通过该函数生成随机整数,通过在包含石头、剪刀、布的列表中索引获得相关选项。
2.程序流程的控制
①重复游戏,直到玩家退出为止,根据这个要求,需要用到循环语句以及判断语句。循环语句用于不断地重复游戏,判断语句则询问玩家意愿,如果玩家愿意则继续玩下去,如果不愿意则退出游戏,这个判断结果可以和循环的判断条件结合在一起。因此这里采用while进行循环,用if-else结构进行判断。
例如:用户意愿用selection变量进行判断,如果selection的值为'Y'或者'y'〔通过input()函数输入〕,则设定flag变量为1,然后用于循环while flag==1的判断中。
②根据玩家和计算机出的选项,确定输赢。
这里由于有好几种情况,因此采用分支结构来进行处理,例如平局,玩家分别出石头、剪刀或布时(非平局时)的输赢情况,这里采用if-else和if-elif并嵌套使用。
举其中一种情况,假设用户出的选项存在变量player当中,而计算机的选项存在变量computer当中,则如果两者一样,为平局:
其他非平局的情况可以放在else里面再次进行判断,例如,用户出剪刀,计算机可能出石头或者布(出剪刀的情况已经判断过),在else里面嵌套如下语句:
最后给出完整的程序,读者也可以根据自己的逻辑进行修改,例如,把胜负情况放在一个列表中,根据用户和计算机出的情况查找列表中对应选项,得出胜负结果。
运行结果: