import random
规则
1.词库中有10个成语
2.随机显示被打乱成语
3.用户有三次机会,用户将正确顺序打出来则为成功
idioms = ['无与伦比', '始终如一', '一如既往', '忍辱负重', '一无是处', '心心念念', '水深火热', '人来人往', '成家立业', '古今中外']
print(rule)
print("欢迎参加猜成语游戏!\n请把乱序后的字词组成一个成语\n")
cotinue = "Y" # 第二次进入游戏时默认选择为Y
while cotinue in ("Y", "y"): # 控制循环的按键
idiom = random.choice(idioms) # 在idioms中随机选择一个成语
answer = idiom # 保存成语
jumble = "" # 将选出的成语进行乱序
for i in idiom:
# 随机抽取一个位置的字词放入乱序jumble中,并从原idiom中删除该字
position = random.randrange(len(idiom)) # position 为不大于被选中字词的个数的随机数,len测试字符长度
jumble += idiom[position] # 两个值相加,返回给 符号左侧的变量
print("乱序后的成语:", jumble)
# 接受玩家猜的成语
guess = input("请输入你猜测的结果:")
count = 1
while guess != answer:
guess = input("猜错了,再猜:")
count = count + 1 # 计数累加
if count >= 3:
print("三次机会用完了")
break # 退出
cotinue = input("是否继续?(继续游戏按:Y,退出按任意键)")
print("谢谢参与,欢迎下次再玩!")
转数组shuffle打乱不行吗?randrange直选选其中一个,可能会出现重复值,代码有问题。
不转数组只能是replace从字符串中去掉了
import random
idioms = ['无与伦比', '始终如一', '一如既往', '忍辱负重', '一无是处', '心心念念', '水深火热', '人来人往', '成家立业', '古今中外']
#print(rule)
print("欢迎参加猜成语游戏!\n请把乱序后的字词组成一个成语\n")
cotinue = "Y" # 第二次进入游戏时默认选择为Y
while cotinue in ("Y", "y"): # 控制循环的按键
idiom = random.choice(idioms) # 在idioms中随机选择一个成语
answer = idiom # 保存成语
jumble = "" # 将选出的成语进行乱序
while len(idiom):#还有没随机的字符继续
position = random.randrange(len(idiom))
jumble += idiom[position]
idiom=idiom.replace( idiom[position],'',1)#从字符串移除
print("乱序后的成语:", jumble)
# 接受玩家猜的成语
guess = input("请输入你猜测的结果:")
count = 1
while guess != answer:
guess = input("猜错了,再猜:")
count = count + 1 # 计数累加
if count >= 3:
print("三次机会用完了")
break # 退出
cotinue = input("是否继续?(继续游戏按:Y,退出按任意键)")
print("谢谢参与,欢迎下次再玩!")
from random import shuffle
def shuffle_str(s):
# 将字符串转换成列表
str_list = list(s)
# 调用random模块的shuffle函数打乱列表
shuffle(str_list)
# 将列表转字符串
return ''.join(str_list)
现在的代码不就是成语四个字乱序,也没有列表切片操作啊
使用random的shuffle函数就可以了,可以参考我的博文
通过游戏编程学Python(番外篇)— 乱序成语、猜单词_请叫我问哥的博客-CSDN博客