在python函数中显示摄氏度

时间:2011-04-12 23:25:52

标签: python

  

可能重复:
  using functions to display numbers in a list

x = [30,34,40,36,36,28,29,32,34,44,36,35,28,33,
     29,40,36,24,26,30,30,32,34,32,28,36,24,32]

def fahrenToCel(x):
    return (x - 32) * (5 / 9)


print fahrenToCel(x)

我知道我已经问了几次,但我仍然遇到问题。我只需要使用一个函数让数字列表以摄氏度显示。这是我必须做的最后一部分,但我无法弄清楚。请帮忙

3 个答案:

答案 0 :(得分:4)

x = [30,34,40,36,36,28,29,32,34,44,36,35,28,33,
     29,40,36,24,26,30,30,32,34,32,28,36,24,32]

def fahrenToCel(x):
    return (x - 32) * (5.0 / 9) # 5.0 to make result float (you can explicitly convert to float as well)


print [fahrenToCel(item) for item in x]

答案 1 :(得分:2)

除非x是一个numpy数组,否则python将不知道如何迭代x中的值。您需要循环遍历x中的值并将每个元素传递给fahrenToCel()并将返回的值放在新列表中,或者让fahrenToCel()获取列表并在内部执行循环并返回新列表

您可能需要查看python教程的以下章节:

http://docs.python.org/tutorial/controlflow.html

或者搜索有关如何遍历列表的其他示例。

更新例如:

def stupidfunc(y):
    return y 

a = [1,2,3,4,5]
b = [stupidfunc(x) for x in a]

def stupidfunc2(y):
    return [stupidfunc2(x) for x in y]

a = [1,2,3,4,5]
b = stupidfunc2(a)

答案 2 :(得分:2)

你使用map(fahrenToCel, x)怎么样?

x = [30,34,40,36,36,28,29,32,34,44,36,35,28,33, 29,40,36,24,26,30,30,32,34,32,28,36,24,32]

def fahrenToCel(f_temp):
    return (f_temp - 32) * (5.0/9)

celsius_list = map(fahrenToCel, x)

顺便说一下,请务必在5.0/9

之后的fahrenToCel函数中写5/9 == 0

了解map function in python doc