有趣的numpy应用--游客来的的那天星期几?

一个的有趣的numpy应用,如果算法有问题请大家指教。

#-*-coding:UTF-8-*-

'''
某地有两个村庄王庄和李庄,王庄的人在星期一、三、五说谎,李庄的人在星期二、四、六说谎。在其他日子他们说实话。
一天,外地来的游客来到这里,见到两个人,分别向他们提出关于日期的问题,两个人都回答说,“前天是我说谎的日子。”
已知被问的两个人分别来自王庄和李庄,请问游客来的的那天星期几?
'''

import numpy as np

if __name__ == "__main__":
    # ------ 初始值 ------
    # 0 代表撒谎的事实,1代表实话的事实
    # 王村
    wang = np.array([0, 1, 0, 1, 0, 1, 1])
    # 李村
    li = np.array([1, 0, 1, 0, 1, 0, 1])
    # 事实情况
    fact = np.zeros(7)
    # 目标天顺序
    seq = [5, 6, 0, 1, 2, 3, 4]
    # ------ 运算区域 ------
    # 计算王村的事实
    wang_fact = np.logical_not(np.logical_xor(wang, fact))
    # 计算李村的事实
    li_fact = np.logical_not(np.logical_xor(li, fact))
    # 计算王村的目标天的事实
    wang_obj_fact = wang[seq]
    # 计算李村的目标天的事实
    li_obj_fact = li[seq]
    # 对比事实找到星期几
    weekday = np.array(['一', '二', '三', '四', '五', '六', '日'])
    for i in np.arange(len(wang_fact)):
        if(wang_fact[i] == wang_obj_fact[i] and li_fact[i] == li_obj_fact[i]):
            print("游客来的的那天是星期%s" % weekday[i])


应用到的技巧:

1.  np.zeros(7):创建全0数组;

2. np.logical_xor():逻辑异或操作;

3. np.arange():创建自然数组;

4. 花式索引:wang[seq] 与 li[seq]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值