石头剪刀布的python题怎么写?

Python045

石头剪刀布的python题怎么写?,第1张

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))

源代码(注意源代码的缩进)