注:本文如涉及到代码,均经过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.