Python编辑猜数字

Python042

Python编辑猜数字,第1张

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

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 random

target=random.randint(1,1000)

count=0

while True:

  try:

      guess=eval(input("猜猜这个数是什么,一共有10次机会哦"))

  except:

      continue

  print("请输入一个整数")

  if guess<target:

      print("猜小了")

      count=+1

  elif guess>target:

      print("猜大了")

      count=+1

  elif count==10:

      print("机会用完了,欢迎下次再来!")

      break

  else:

      print("猜对了,正确答案为",target,"/n","一共猜了{}次".format(count))

      break

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

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