用python实现猜数字

Python018

用python实现猜数字,第1张

a = '1459'

for x in range(7):

    j = 0

    b = str(input('请输入4个数字:'))

    

    # 判断输入的是否为4位

    if len(b)!=4:

        print("输入有误")

        break

        

    # 判断输入的是否为数字

    try:

        float(b)

    except:

        print("输入有误")

        break

    

    

    for i in range(4):

        if b[i]==a[i]:

            j=j+1

    print(str(j)+'A'+str(4-j)+'B')

    if j==4:

        print("恭喜你赢了")

        break

print("游戏结束")

#定义用户可以猜七次,如果七次都没猜对,系统给出答案

import random

un = random.randint(1,100)

counter =0

while counter <7:        #定义猜七次机会

        answer =int(input('请你输入1-100的数字: '))

        if answer == un:

                print('恭喜你,猜对了!')

                break    # 循环到break,就不执行了,否则继续执行

        elif answer >un:

                print('你猜大了~')

        else:

                print('你猜小了~')

                counter +=1

        else:

                print('正确的答案是: ',un)        #系统给出答案

核心代码给你,具体的功能还需要自己完善。

import time, random

class GuessNum:

    def __init__(self):

        self._num = ''

        self.input_num = []

        self.count = 1                                      #猜对所用次数

        self.sec = 0                                           #猜对所用时间

        self._generate_num()

    def _generate_num(self):                        #产生不重复的四个数字

        seq_zton = list(range(10))

        for i in range(0, 4):

            a = str(random.choice(seq_zton))   #选出一个数字

            self._num += a

            seq_zton.remove(int(a))                 #注意a的类型

        self.sec = time.clock()                          #开始计时

    def check_answer(self):

        return self._num

    def check_input(self):

        num_pos, num_value = 0, 0               #位置对和数值对的分别的个数

        tmp = input("Please input the number you guess(No repetition),or 'c' to check the answer:")

        if tmp == 'c':

            print(self.check_answer())

            tof = self.check_input()

            return tof

        elif not tmp.isalnum or not len(tmp) == 4:

            print("Wrong format!")

            tof = self.check_input()                #需要优化

            return tof

        self.input_num = list(tmp)

        lst_temp = list(self._num)

        if self.input_num == lst_temp:          #猜对

            self.prt_vic()

            return True

        for i in lst_temp:

            if i in self.input_num:

                if lst_temp.index(i) == self.input_num.index(i):        #位置也相同

                    num_pos += 1

                    num_value += 1

                else:

                    num_value += 1

        self.prt_state(num_pos, num_value)

        self.count += 1

        return False

    def prt_state(self, num_pos, num_value):

        print("You've got %d numbers with the right position and %d numbers with the right value only" % (num_pos, num_value))

    def prt_vic(self):

        t = time.clock()

        self.sec = t - self.sec

        print("Congratulations!You have successfully got the right number!")

        print("%d times and %.2f sec in total to get the right answer" % (self.count, self.sec))

gn = GuessNum()

while True:

    ss = gn.check_input()

    if ss:

        b = input("Continue? y/n:")

        if b == 'n':

            break

        else:

            gn = GuessNum()

            continue