学习Python第五天
今天周末,自习,简简单单写几个代码
(老师如果看到我这篇,请看上一篇,你要求的我昨天已经写好了)
第一题
-
输入三个整数,按照从大到小的顺序输出
这个题,写的时候想把它写的高级一点,就是不局限于三个数而是更多,下面是我的过程
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)
第二题
-
向列表中添加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))#直接输出此时最大的元素即可
第三题
-
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