python3代码如下:
# coding:utf-8
import random
guess_list = ["石头", "剪刀", "布"]
win_combination = [["布", "石头"], ["石头", "剪刀"], ["剪刀", "布"]]
while True:
computer = random.choice(guess_list)
user = input('请输入:石头、剪刀、布\n').strip() # 删除首尾的空格
if user not in guess_list:
continue
elif computer == user:
print("平局,再来")
elif [computer, user] in win_combination:
print("你输了,哈哈")
else:
print("你赢了,恭喜")
break
运行结果如下:
平局或输都会继续游戏,直到赢才会结束
算法分析 以27和20为例,首先求出a和b的差,这个差先由从1开始的自然数相加填补,
也就是说27和20差7,先由1+2+3=6填补,操作了3次,然后还差1,由a加4,b加5填补
操作了2次,因为对a和b分别操作了1次,所以要乘以2,因此有公式count=i-1+(c-n)*2
按照你的要求编写的完整的Python程序如下
a,b=map(int,input('请输入a,b的值(中间用空格隔开):').split())
if a>b:
c=a-b
else:
c=b-a
n=0
i=0
while n<=c:
i+=1
n=n+i
n=n-i
count=i-1+(c-n)*2
print("使%d和%d相等的最小操作次数为%d" % (a,b,count))
源代码(注意源代码的缩进)