开始 Python 个函数和列表
Beginning Python functions and lists
*快速编辑我正在使用 python 3.4
我刚开始在 class 中学习 python,虽然它似乎是一种比 C++ 更容易处理的语言,但仍有一些我无法解决的问题。
我需要做一个小函数,它接受一些以华氏度为单位的温度,并将它们转换为摄氏度,然后以列表形式放回它们。我有大部分代码,我相信它应该可以工作。但是,我一直收到一个错误,指出变量尚未声明。
input_temps = [-20.0, -10.0, 5.0, 18.0, 50.0, 212.0]
def farenheit_to_celsius(data): #function definition
output_temps = [] #create empty list
for input in data: #cycle through list
((input_temps-32)* 5/9) #done to each item oninput_temps
output_temps += [input] #connects list to list
return output_temps #returns output_temps with newvalues
print(output_temps) #prints out output_temps to debug
代码在我的编辑器上缩进正确。但是,当我尝试 运行 时,它说 "output_temps" 尚未声明。另外,我正在尝试将列表添加到列表中,但是我不确定我是否正确地添加了列表。
output_temps += [input] #not 100% sure if this is right.
for input in data:
((input_temps-32)* 5/9) # this should be input = (input - 32)*5/9
Int 在 Python 中是不可变的。
您的代码中有一些缩进错误。
在打印 output_temps.
之前,您还没有调用 farenheit_to_celsius
input_temps = [-20.0, -10.0, 5.0, 18.0, 50.0, 212.0]
def farenheit_to_celsius(data): #function definition
output_temps = [] #create empty list
for input in data: #cycle through list
input = ((input-32)* 5/9) #done to each item oninput_temps
output_temps += [input] #connects list to list
# I think use output_temps.append(input) will be better. But it's ok here.
return output_temps #returns output_temps with newvalues
print(farenheit_to_celsius(input_temps)) #prints out output_temps to debug
output_temps 正在您的方法内部声明,但在不在方法内部的打印语句中被引用,这就是您收到错误的原因。不要打印 output_temps,而是打印对方法的调用,这将 return output_temps:
print(farenheit_to_celsius(my_data))
要添加到 Python 中的列表,您可以这样做:
my_list.append(my_data)
input_temps = [-20.0, -10.0, 5.0, 18.0, 50.0, 212.0]
def farenheit_to_celsius(data):
output_temps = []
for input in data:
((input_temps-32)* 5/9)
output_temps += [input]
return output_temps
print(output_temps)
你在这里应该很好,我只需要修复这个程序中的一些白色-space错误和output_temps += [input] 好的它不会导致任何错误
首先,如果不重新分配 input
变量,则不会修改它们。其次,output_temps
中的修改应该在循环内部完成。第三也是最重要的一点,该函数应该已经被调用(output_temps
的作用域在函数执行结束后结束)。
input_temps = [-20.0, -10.0, 5.0, 18.0, 50.0, 212.0]
def farenheit_to_celsius(data): #function definition
output_temps = [] #create empty list
for input in data: #cycle through list
input = ((input-32)* 5/9) #done to each item oninput_temps
output_temps += [input] #connects list to list
return output_temps #returns output_temps with newvalues
print(farenheit_to_celsius(input_temps))
output_temps += [input]
是正确的。它将 input
放入列表中,它是唯一的元素,然后将其添加到 output_temps
。但是,可能更好的方法是使用 append method on lists。
output_temps.append(input)
问题是您定义函数,而不是调用函数。就像在 C++ 中一样,函数中代码的 none 是 运行,除非您调用该函数。
此外,即使您在 print
之前调用该函数,print
也不会工作,因为您正在尝试访问 output_temps
,它是函数,来自函数外部。函数 returns output_temps
,所以你应该这样做:
output_temps = fahrenheit_to_celsius(input_temps)
您在函数本身内部也有问题,您还没有 运行 因为您没有在代码中调用它。首先,((input_temps-32)* 5/9)
指的是温度列表,而不是您正在迭代的当前温度。但即使您执行 ((input-32)* 5/9)
,它也只会计算您想要的值,而不会保存它。你需要对结果做些什么;例如,您可以将它分配给一个变量:
result = (input_temps - 32) * (5 / 9)
接下来,output_temps += [result]
应该 在 的 for
循环中;否则,您只能在 for
循环完成后将最后一个温度添加到输出列表。此外,您应该使用 output_temps.append()
向列表中添加一个值,而不是您现在正在做的事情。
这是您的代码的固定版本,对变量名称进行了一些更改:
fahrenheit_temps = [-20.0, -10.0, 5.0, 18.0, 50.0, 212.0]
def fahrenheit_to_celsius(temps):
celsius_temps = []
for fahrenheit in data:
celsius = (input_temps - 32) * (5 / 9)
celsius_temps.append(celsius)
return celsius_temps
print(fahrenheit_to_celsius(fahrenheit_temps))
现在,一般来说,我建议让函数只处理一个值,并在函数外部处理列表。
此代码最终与上面的代码执行相同的操作,但它更简洁、更灵活。
def fahrenheit_to_celsius(temp):
return (temp - 32) * (5 / 9)
fahrenheit_temps = [-20.0, -10.0, 5.0, 18.0, 50.0, 212.0]
celsius_temps = [fahrenheit_to_celsius(temp) for temp in fahrenheit_temps]
print(celsius_temps)
*快速编辑我正在使用 python 3.4
我刚开始在 class 中学习 python,虽然它似乎是一种比 C++ 更容易处理的语言,但仍有一些我无法解决的问题。
我需要做一个小函数,它接受一些以华氏度为单位的温度,并将它们转换为摄氏度,然后以列表形式放回它们。我有大部分代码,我相信它应该可以工作。但是,我一直收到一个错误,指出变量尚未声明。
input_temps = [-20.0, -10.0, 5.0, 18.0, 50.0, 212.0]
def farenheit_to_celsius(data): #function definition
output_temps = [] #create empty list
for input in data: #cycle through list
((input_temps-32)* 5/9) #done to each item oninput_temps
output_temps += [input] #connects list to list
return output_temps #returns output_temps with newvalues
print(output_temps) #prints out output_temps to debug
代码在我的编辑器上缩进正确。但是,当我尝试 运行 时,它说 "output_temps" 尚未声明。另外,我正在尝试将列表添加到列表中,但是我不确定我是否正确地添加了列表。
output_temps += [input] #not 100% sure if this is right.
for input in data:
((input_temps-32)* 5/9) # this should be input = (input - 32)*5/9
Int 在 Python 中是不可变的。
您的代码中有一些缩进错误。
在打印 output_temps.
input_temps = [-20.0, -10.0, 5.0, 18.0, 50.0, 212.0]
def farenheit_to_celsius(data): #function definition
output_temps = [] #create empty list
for input in data: #cycle through list
input = ((input-32)* 5/9) #done to each item oninput_temps
output_temps += [input] #connects list to list
# I think use output_temps.append(input) will be better. But it's ok here.
return output_temps #returns output_temps with newvalues
print(farenheit_to_celsius(input_temps)) #prints out output_temps to debug
output_temps 正在您的方法内部声明,但在不在方法内部的打印语句中被引用,这就是您收到错误的原因。不要打印 output_temps,而是打印对方法的调用,这将 return output_temps:
print(farenheit_to_celsius(my_data))
要添加到 Python 中的列表,您可以这样做:
my_list.append(my_data)
input_temps = [-20.0, -10.0, 5.0, 18.0, 50.0, 212.0]
def farenheit_to_celsius(data):
output_temps = []
for input in data:
((input_temps-32)* 5/9)
output_temps += [input]
return output_temps
print(output_temps)
你在这里应该很好,我只需要修复这个程序中的一些白色-space错误和output_temps += [input] 好的它不会导致任何错误
首先,如果不重新分配 input
变量,则不会修改它们。其次,output_temps
中的修改应该在循环内部完成。第三也是最重要的一点,该函数应该已经被调用(output_temps
的作用域在函数执行结束后结束)。
input_temps = [-20.0, -10.0, 5.0, 18.0, 50.0, 212.0]
def farenheit_to_celsius(data): #function definition
output_temps = [] #create empty list
for input in data: #cycle through list
input = ((input-32)* 5/9) #done to each item oninput_temps
output_temps += [input] #connects list to list
return output_temps #returns output_temps with newvalues
print(farenheit_to_celsius(input_temps))
output_temps += [input]
是正确的。它将 input
放入列表中,它是唯一的元素,然后将其添加到 output_temps
。但是,可能更好的方法是使用 append method on lists。
output_temps.append(input)
问题是您定义函数,而不是调用函数。就像在 C++ 中一样,函数中代码的 none 是 运行,除非您调用该函数。
此外,即使您在 print
之前调用该函数,print
也不会工作,因为您正在尝试访问 output_temps
,它是函数,来自函数外部。函数 returns output_temps
,所以你应该这样做:
output_temps = fahrenheit_to_celsius(input_temps)
您在函数本身内部也有问题,您还没有 运行 因为您没有在代码中调用它。首先,((input_temps-32)* 5/9)
指的是温度列表,而不是您正在迭代的当前温度。但即使您执行 ((input-32)* 5/9)
,它也只会计算您想要的值,而不会保存它。你需要对结果做些什么;例如,您可以将它分配给一个变量:
result = (input_temps - 32) * (5 / 9)
接下来,output_temps += [result]
应该 在 的 for
循环中;否则,您只能在 for
循环完成后将最后一个温度添加到输出列表。此外,您应该使用 output_temps.append()
向列表中添加一个值,而不是您现在正在做的事情。
这是您的代码的固定版本,对变量名称进行了一些更改:
fahrenheit_temps = [-20.0, -10.0, 5.0, 18.0, 50.0, 212.0]
def fahrenheit_to_celsius(temps):
celsius_temps = []
for fahrenheit in data:
celsius = (input_temps - 32) * (5 / 9)
celsius_temps.append(celsius)
return celsius_temps
print(fahrenheit_to_celsius(fahrenheit_temps))
现在,一般来说,我建议让函数只处理一个值,并在函数外部处理列表。
此代码最终与上面的代码执行相同的操作,但它更简洁、更灵活。
def fahrenheit_to_celsius(temp):
return (temp - 32) * (5 / 9)
fahrenheit_temps = [-20.0, -10.0, 5.0, 18.0, 50.0, 212.0]
celsius_temps = [fahrenheit_to_celsius(temp) for temp in fahrenheit_temps]
print(celsius_temps)