灿灿灿的第七次python记录——聪明的尼姆游戏,猜单词游戏,成绩输入

一、实验课时~

当当当~这周来点不一样的
来点操作!!!
走起!

1.1 聪明的尼姆游戏

尼姆游戏是一个著名的游戏,有很多变种玩法。两个玩家轮流从一堆物品中拿走一部分。在每一步中,玩家可以自由选择拿走多少物品,但是必须至少拿走一个并且最多只能拿走一半物品,然后轮到下一个玩家。拿走最后一个物品的玩家输掉游戏。
在聪明模式中,计算机每次拿走足够多的物品使得堆的大小是2的幂次方减1——也就是3,7,15,31或63.除了堆的大小已经是2的幂次方减1,在其他情况下这样走都是符合游戏规则。在那种情况下,计算机就按游戏规则随机拿走一些。
编写程序,模拟聪明版的尼姆游戏。

from random import randint,choice
def everysetp(n):
    half = n / 2
    m = 1
    lst = []
    while True:
        i = 2 ** m - 1
        if i >= n:
            break
        if i >= half:
            lst.append(n - i)
        m += 133
    if lst:
        return choice(l22st)
    else:
        return randint(1,int(half))


def game(n):
    while n > 1:
        print("轮到你的回合,还剩%d的物品" % n)
        while True:
            try:
                num_y = int(input("你要拿走的数量"))
                assert 1 <= m_y <= n // 2
                break
            except:
                print("请输入1到%d之间数量的物品" % n//2)
        n -= m_y
        if n == 1:
            print("你赢了")
        n -= everysetp(n)
    else:
        return print("你输了")
game(100)

1.2 猜单词游戏

编写程序模拟猜单词游戏。程序运行时,系统随机生成一个单词,然后将产生后的单词中字母的顺序进行打乱,组成新的一个单词。然后提示用户进行猜测,并根据用户输入进行必要的提示(猜对了,猜错了),如果猜错了,则提示用户继续猜,每一个用户有三次猜测的机会。猜对了则提示用户,“猜对了,恭喜过关”,然后询问用户是否要继续下一关。

import random
WORDS = ['apple','banana','cherry','while','tuple','dictionary','anniversary']
print("欢迎参加猜单词游戏!\n请把乱序后的字母组成一个单词\n")
step = 1
isContinue = "Y"
while isContinue in ("Y","y"):
    word = random.choice(WORDS)
    answer = word
    jumble = ""
    for i in word:
        position = random.randrange(len(word))
        jumble += word[position]
        word = word[:position] + word[(position+1):]
    print("乱序后的单词:",jumble)
    guess = input("\n请输入您猜的结果:")
    if step < 3
        while guess !=answer:
            guess = input("\n结果不对,请重新猜测:")
            step +=1
    else:
        print("很遗憾,没有机会啦!")
    print("\n恭喜你,答对了!")
    isContinue = input("\n是否将继续(Y/N)?")
print("\n谢谢参与,欢迎下次在玩!")

加油!再来一次!

1.3 成绩输入

输入若干学生的成绩,计算所有这些学生成绩的平均分、及格率以及优秀率。其中学生成绩的个数由第一行输入的整数控制的,60分及以上者为成绩合格,85分及以上者为优秀。
例如输入:4
89
95
56
74
输出:
平均分为:78.50
及格率为:75%
优秀率为:50%

if __name__=='__main__':
    n = int(input())
    sum = 0
    count = 0
    average = 0
    good = 0
    if n != 0:
        grade = input().split()
        grade = grade[:n]
        for i in grade:
            sum += int(i)
            if int(i) >= 60:
                count += 1
                count1 = (count/n)*100
            if int(i) >= 85:
                good +=1
                good1 = (good/n)*100
        average = sum / n
 print("平均分为:",average)
 print("及格率:", count1,"%")
 print("优秀率:", good1,"%")

二、总结

好啦!本周的练题到位啦!
要熟练运用所学知识,加上从书上及网上来巩固自己! 冲!在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值