最后的石头
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/
来源: 老齐教室