3个月熟练使用python--Day2打卡
3个月熟练使用python--Day2打卡
1、约瑟夫环问题
问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位?
解题思路:循环报数,从1开始累加,凡是3的倍数的数从原列表中移除,形成新的列表,再继续数数,再剔除3的倍数的数,一直循环操作,直到列表中只有1个数;
代码:
input_int=100#随便输入一个整数
first_list=[]#创建一个空列表
for i in range(1,input_int+1):#形成一个从1到100的列表
first_list.append(i)
count=0
while len(first_list)>1:#当first_list列表的位数大于2时,一直循环下面语句
tran_list=first_list[:]#构造相同的列表,方便之后保存3的倍数的数
#print(tran_list)
for i in range(0,len(tran_list)):
count=count+1#计数,如果数到3的倍数,则这个数要被移除
if count%3 ==0:#判断这个数除以3的余数是不是等于0,如果等于0,就用first_list列数中移除这个数
first_list.remove(tran_list[i])#从原来的数组中移除3的倍数的数
print(first_list)
2、逻辑推理题
问题:
推理题:有人邀请A,B,C,D,E,F6个人参加一项会议,这6个人有些奇怪,因为他们有很多要求,已知:
1.A,B两人至少有1人参加会议。
2.A,E,F3人中有2人参加会议。
3.B和C两人一致决定,要么两人都去,要么两人都不去。
4.A,D两人中只1人参加会议。
5.C,D两人中也只要1人参加会议。
6.如果D不去,那么E也决定不去。那么最后究竟有哪几个人参加了会议呢?
解题思路:用1,0代表用户去或者不去参加会议,在不知道答案的情况下,A、B、C、D、E、F六个人有可能是0,也有可能1,所以每个人要么等于0,要么等于1,利用for循环和if条件语句,得出A、B、C、D、E、F的值;
代码:
list_begin=[0,1]
for a in list_begin:
for b in list_begin:
for c in list_begin:
for d in list_begin:
for e in list_begin:
for f in list_begin:
if a+b>=1 and a+e+f>=2 and b==c and c+d==1 and a+d==1 and d==e:
print(a,b,c,d,e,f)
如果大家对于学习Python有任何问题,学习方法,学习路线,如何学习有效率的问题,可以随时来咨询我,或者缺少系统学习资料的,我做这行年头比较久,自认为还是比较有经验的,可以帮助大家提出建设性建议,这是我的Python交流qun:785128166,有任何问题可以随时来咨询我。