学习Python第五天

学习Python第五天

今天周末,自习,简简单单写几个代码

(老师如果看到我这篇,请看上一篇,你要求的我昨天已经写好了)

第一题

  1. 输入三个整数,按照从大到小的顺序输出

    这个题,写的时候想把它写的高级一点,就是不局限于三个数而是更多,下面是我的过程

    1.1版本

    我想的是将大的放在列表开头,小的就追加在列表末尾

    nums = []
    count = 0
    for _ in range(3):
        num = int(input('请输入一个整数'))
        if num > count:#和比较大小
            nums.insert(0, num)
            count = num
        elif num < count:
            nums.append(num)
    for i in nums:
        print(i)
    

    然后就出错了,如果先输入x1,在输入x2,再输入x3,其中x1>x2>x3,或者x3>x2>x1那么没问题,

    但是如果x1>x3>x2就会出错

    于是就有了1.2版本

    1.2版本

    现在输入多少个数字都可以,这里想要两个空列表,第一个放输入的数据,第二个放待排序的数据,

    nums = []
    counts = []
    for _ in range(6):
        num = int(input('请输入一个数'))
        nums.append(num)#先将输入的数据导入第一个空列表,
    for _ in range(len(nums)):#循环列表长度次数
        counts.append(max(nums))#找出列表里最大值依次追加到第二个空列表
        nums.remove(max(nums))#将已经追加的元素删除,才能找下一个最大元素
    for i in counts:
        print(i)
    

    第二题

    1. 向列表中添加10个随机整数,找出其中第2大的元素

      这个题比较简单一点

      第四行第五行二选一,因为没有说明范围,就以为是自己输入数据,或者随便规范一个范围

      思路和上面一题大致相同

    import random
    nums = []
    for _ in range(10):
        num = random.randrange(1, 10000000000000)
        # num = int(input('请输入整数num = '))
        nums.append(num)#将数据循环导入列表
        pass
    nums.remove(max(nums))#删除列表中最大的元素,此时第二大的就是最大的
    print(max(nums))#直接输出此时最大的元素即可
    

    第三题

    1. 21根火柴游戏:有21根火柴,人和计算机轮流拿,人先拿(输入拿几根)计算机后拿,每次至少1根最多4根,拿到最后一根火柴的算输,要确保计算机一定可以获胜!

      这题,极其大脑壳

      一开始的思路是五根火柴,当剩下五根的时候想办法让人拿到最后一根即可

      首先随便拿,使用while循环(因为不知道拿几次才会最后剩下五根),当火柴数量小等于5破出循环

      1.1版本
      #错的, 可以运行但是不能保证每次计算机每次获胜
      
      import random
      
      count = 21
      num = 0
      num_computer = 0
      while count > 5:
          print(count)
          num = int(input('拿几根,少于火柴数,且在1~4之间'))
          count -= num
          num_computer = random.randrange(1, 4)
          count -= num_computer
          pass
      if count - num <= 5:#如果最后一次人拿了破出循环
          while count < 0:
              num_computer = random.randrange(1, 4)
              count -= num_computer
              num = count - num_computer#计算机拿一次之后人拿人全部拿完即可
              count -= num
      elif count - num_computer <= 5:
          num = count - 1#
      if count - num <= 0:
          print('计算机获胜')
      elif count - num_computer <= 0:
          print('人获胜')
      
      
      1.2版本

      这次改良了一下,人先拿一根,剩下20根,只要保持计算机拿完人拿的和计算机拿的加起来等于5就行

      import random
      count = 21
      num = 1
      num_computer = 0
      print('人先拿1根')
      while count > 0:
          num_computer = random.randrange(1, 4)
          count -= num_computer
          print(f'计算机拿了{num_computer}根')
          num = (5 - num_computer)
          count -= num
          print(f'人拿{num}根')
      if count - num <= 0:
          print('计算机获胜')
      elif count - num_computer <= 0:
          print('人获胜')
      
第四题

计算机产生一个1到100的随机数,输入自己猜的数字’计算机给出对应提示"大一点",”小一点“,
或 ”恭喜你猜对了,直到猜中为止“如果猜的次数超过七次,计算机温馨提示”智商余额不足“
这是上次的题目,这次改成,人输入一个数,让计算机来猜
输出结果,每次计算机都要猜很多很多次,所以,不知道做的有没有问题,如果有,请大佬指出,

import random
answer = int(input('请输入一个1到100之间的数'))
count = 0
value1 = random.randrange(1, 101)
value2 = 0
while True:
    if answer > value1:
        print(value1)#输出电脑猜的数
        print('稍微大一点')
        value2 = value1 // 2 + value1#折断法缩小猜的数据范围
        value1 = random.randrange(value1, value2)
        count += 1#计算电脑猜的次数
    elif answer < value1:
        print(value1)
        print('稍微小一点')
        value2 = value1 // 2
        value1 = random.randrange(value2, value1)
        count += 1
    else:
        print('猜对了!')
        break#终止循环
    if count == 7:
        print('故障了?')#温馨提示
        count = 0
      

   


  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值