3个月熟练使用python--Day2打卡

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,有任何问题可以随时来咨询我。