zl程序教程

您现在的位置是:首页 >  其它

当前栏目

20201013练习题

练习题
2023-09-14 09:08:38 时间

第一题:
警察局抓了a,b,c,d 4名偷窃嫌疑犯,其中只有一人是小偷。审问中:
a说:“我不是小偷。”
b说:“c是小偷。”
c说:“小偷肯定是d。”
d说:“c在胡说。”
四句话,三句话对的,一句话错的
请问:谁才是真正的小偷?

第一题思路:

四个犯人编号1,2,3,4,

a说:thief != 1

b说:thief = 3

c说:thief = 4

d说:thief != 4

四句话,三句话对的,一句话错的。

源代码:

for i in range(4):
    i += 1
    if 3 == ((i != 1) + (i == 3) + (i == 4) + (i != 4)):
        str = chr(96 + i) + "是小偷!"
        print(str)

python中,逻辑判断是可以相加的
True + True = 2,True + False = 1
这里就是从a到d,以1到4来代替,枚举每一个犯人,代入他们说的话中,如果出现了3句真话,那么代表改犯人成立
至于96嘛,a的ascii码数值是97,他为了+1到+4分别代表了a,b,c,d,跟chr(ord('a') - 1 + i)等效


第二题:
给你一个字典:
t={‘year’:’2013’,’month’:’9’,’day’:’30’,’hour’:’16’,’minute’:’45’,’second’:’2’}
请按这样的格式输出:2013-09-30 16:45:02

第二题答案:

def data_to_str(d):
    '''
    :param d: 日期字典
    :return: str 格式化后的日期
    '''

    s1='{} {:>02} {:>02}'.format(t['year'],t['month'],t['day'])
    s2='{} {:>02} {:>02}'.format(t['hour'],t['minute'],t['second'])
    print(s1,s2)
    print('-'.join(s1.split()),end=' ')
    print(':'.join(s2.split()))

t={'year':'2013','month':'9','day':'30','hour':'16','minute':'45','second':'2'}
print(data_to_str(t))