用python写猜数字游戏

2021/9/15 1:05:23

本文主要是介绍用python写猜数字游戏,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

猜数字游戏

从名单中随机抽取5位同学,参加猜数字

目的:练习文件操作、循环、判断、构造函数、列表和集合的操作

主要思路:

  • 随机抽取从文件中抽取5个人员参加游戏
    • 判断名单名字的行数
    • 随机生成数,并在文件中获取名单
  • 判断数字的大小
    名字单:name
张三
李四
王五
狗四
李好
张四
王麻子
胡八一
李敏
朱三
周二
曹三
曹达
小鬼子

版本一:

"""
从名单中随机抽取5位同学,参加猜数字
"""
import random
def main():
    # 2、随机抽取5个人员
    peopleNum = 5  #抽取5人
    people(peopleNum)
    # 3、随机生成数字1~100的数
    number = random.randint(1,100)
    # 4、判断正确
    referee(number)
#2、随机抽取5个人员
def people(peoplNum):
    peopleList = set()
    line = fileLine()

    while  len(peopleList) < peoplNum :   #避免了猜数字人员名字的重复问题
        # 生成随机数
        randNum = random.randint(1, line)
        with open("name", 'r', encoding="utf-8") as  f:   #可以不用close()文件
            for i in range(1, randNum + 1):    #目的:一次遍历文件的内容,找到指定的行(randNum就是行号)
                name = f.readline().strip('\n')  #去掉名字中的\n
                if randNum == i:
                    peopleList.add(name)   #将名字添加到人员名字中peopleList
    print("恭喜",peopleList,"进行猜数比赛")

#2.1 、获取名单的行数
def fileLine():
    with open("name","r",encoding="utf-8") as f:
        linecount = 0
        for line in f:
            linecount +=1
    return linecount

#4、判断正确
def referee(number):
    max = 100
    min = 1
    print(number)
    while True:
        inputNum = int(input("请输入%d~%d整数:\n"%(min,max)))
        if inputNum == number:
            print("恭喜你猜中了",number)
            break
        elif inputNum >= min and inputNum < number:
            min = inputNum
        elif inputNum <= max and inputNum > number:
            max = inputNum


if __name__ == '__main__':
    main()

版本二:

"""
从名单中随机抽取5位同学,参加猜数字
"""
import random
def main():
    # 2、随机抽取5个人员
    peopleNum = 5  #抽取5人
    people(peopleNum)
    # 3、随机生成数字1~100的数
    number = random.randint(1,100)
    # 4、判断正确
    referee(number)
#2、随机抽取5个人员
def people(peoplNum):
    peopleList = []  #人员的名字
    radNum = []     #保存随机数,为避免随机数产生相同
    line = fileLine()
    for x in range(peoplNum):
        # 生成随机数
        randNum = random.randint(1, line)
        radNum.append(randNum)  
        if radNum.count(randNum) > 1:   #统计数随机数产生的的个数
            continue
        with open("name", 'r', encoding="utf-8") as  f:
            for i in range(1, randNum + 1):   
                name = f.readline().strip('\n')
                if randNum == i:
                    peopleList.append(name)
    print(peopleList)
#2.1 、获取名单的行数
def fileLine():
    with open("name","r",encoding="utf-8") as f:
        linecount = 0
        for line in f:
            linecount +=1
    return linecount

#4、判断正确
def referee(number):
    max = 100
    min = 1
    print(number)
    while True:
        inputNum = int(input("请输入%d~%d整数:\n"%(min,max)))
        if inputNum == number:
            print("恭喜你猜中了",number)
            break
        elif inputNum >= min and inputNum < number:
            min = inputNum
        elif inputNum <= max and inputNum > number:
            max = inputNum


if __name__ == '__main__':
    main()

版本三:

"""
从名单中随机抽取5位同学,参加猜数字
"""
import random
import linecache
def main():
    # 2、随机抽取5个人员
    peopleNum = 5  #抽取5人
    people(peopleNum)
    # 3、随机生成数字1~100的数
    number = random.randint(1,100)
    # 4、判断正确
    referee(number)
#2、随机抽取5个人员
def people(peoplNum):
    peopleList = []  #人员的名字
    line = fileLine()
    radNum = []  # 保存随机数,为避免随机数产生相同
    while len(peopleList) < peoplNum:
        index = random.randint(1,line)   
        radNum.append(index)
        if radNum.count(index) > 1:  # 统计数随机数产生的的个数,避免名单人员名字重复
            continue
        peopleList.append(linecache.getline("name",index).strip("\n"))
    print(peopleList)
#2.1 、获取名单的行数
def fileLine():
    with open("name","r",encoding="utf-8") as f:
        linecount = 0
        for line in f:
            linecount +=1
    return linecount

#4、判断正确
def referee(number):
    max = 100
    min = 1
    while True:
        inputNum = int(input("请输入%d~%d整数:\n"%(min,max)))
        if inputNum == number:
            print("恭喜你猜中了",number)
            break
        elif inputNum >= min and inputNum < number:
            min = inputNum
        elif inputNum <= max and inputNum > number:
            max = inputNum


if __name__ == '__main__':
    main()


这篇关于用python写猜数字游戏的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程