Python数据结构与算法11:基本结构:练习题2

:本文如涉及到代码,均经过Python 3.7实际运行检验,保证其严谨性。

本文阅读时间约为5分钟

栈的编程练习题2:每日温度

根据每日气温列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。

输入格式:

一行以Python表达式格式给出的列表,包含数个整数。

输出格式:

整数组成的列表,直接使用print输出。

输入样例:

[73, 74, 75, 71, 69, 72, 76, 73]

输出样例:

[1, 1, 4, 2, 1, 1, 0, 0]

参考代码模板:

def dailyTemp(T):
    ### code here
 
t = eval(input())
print(dailyTemp(t))

解答:首先,题意不太好理解,这里要对题意做出详细解释 。

假设第0天、第1天、……、第7天的温度依次是以下列表中的元素(单位均为华氏度):

l1 = [73, 74, 75, 71, 69, 72, 76, 73]

对应结果如下:

l2 = [1, 1, 4, 2, 1, 1, 0, 0]

l2[0]这个元素1,是指第0天的73华氏度要经过1天,也就是到第1天74华氏度时才能超过第0天的温度。

l2[2]这个元素4,是指第2天的温度,l[2]也就是75华氏度,要经过4天也就是要到第6天也就是温度为l[6]=76时才能超过第二天的温度。

其余的都是同理。

如果到了列表结尾都没有超过那天温度的,l2中对应的元素一律为0。

理解了题意后,其余的要靠自己思考了。

参考代码如下:

def dailyTemp(T):
    l = []
    for i in range(len(T)):
        for j in range(i+1, len(T)):
            if T[i] < T[j]:
                l.append(j-i)
                break
            if j == len(T) -1:
                l.append(0)
                break
    l.append(0)
    return l
t = eval(input())
print(dailyTemp(t))

To be continued.

推荐阅读更多精彩内容