练习:最后的石头(The final Stone.)

156 篇文章 3 订阅

最后的石头


 The final stone .
 做了一道算法小练习😀😀

    *☆程序调试环境☆*

    python 3.6.6 安卓版(手机)


知识点

random.choice(), random.choices()

list.remove(), list.append()


技巧

random.choices(groups, k=number)

第二个参数,不可以漏掉“k=”。


题目

在这里插入图片描述


代码运行效果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


完整代码

My python code
#/sur/bin/nve python
# coding: utf-8

#导入随机数模块
import random

print('\n'*2)
#设置待粉碎石头堆大小
stone_number = int(input('请选取石头个数(2~100):'.rjust(12)))
if stone_number<2:
    print('\n'*2, ('"%s"小于2,已设置为"2"。'%stone_number).center(36))
    stone_number = 2
elif stone_number>100:
    print('\n'*2, ('"%s"大于100,已设置为"100"。'%stone_number).center(36))
    stone_number = 100
#list(range(1, 201)设置每块石头质量为1~200
#k=stone_number准备用户键入数量的石头堆
stone = random.choices(list(range(1, 201)), k=stone_number)
print('\n'*2, '待粉碎石头堆,%s颗:\n'%len(stone), stone)

def smash(stone):
    """粉碎两颗石头"""
    x = random.choice(stone)
    stone.remove(x)
    print('① 选出一颗石头:%s'%x, '余下的石头堆:', stone)
    y = random.choice(stone)
    stone.remove(y)
    print('② 选出另一颗石头:%s'%y, '余下的石头堆:', stone)
    #如果x>y,交换x, y
    if x>y: x, y = y, x
    #如果Smash后有剩下石头,放入石头堆
    if x!=y: stone.append(y-x)
    print('③ 粉碎两颗石头后的石头堆:', stone)

#Smash Start
k = 1
#粉碎石头,直到剩下一颗or没有石头
while len(stone)>1:
    #打印分割线
    print(('%s'%k).center(41,'~'))
    smash(stone) #调用函数smash()粉碎石头
    k += 1
#打印分割线
print(('').center(41,'~'))
#打印最终结果
print('\n'*2)
if len(stone)>0: print('最后的石头:'.rjust(16), stone)
else: print('石头已全部粉碎!'.center(36))
print('\n'*2)

温馨推荐

在这里插入图片描述


作者: 老齐

链接: https://www.itdiffer.com/

来源: 老齐教室


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦幻精灵_cq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值