错误信息:'type' 类型的参数不可迭代
Error message: argument of type 'type' is not iterable
我刚开始 Python,我有一个简短的问题。
import sys
# Function creates a list [1,3,5..99]
def createlist():
list = []
for i in range(1, 100, 2):
list.append(i)
return(list)
# Function asks for an odd integer between 1..100
def numberinsert():
n = int(input("Please enter an odd number between 1 and 100: "))
if n in list:
return(n)
else:
sys.exit("Number does not match requirements!")
def main():
createlist()
numberinsert()
它给了我这个:TypeError: argument of type 'type' is not iterable
我做错了什么?
您正试图从另一个函数 numberinsert
访问函数 createlist
的局部变量,但这是不可能的(局部变量只能在它们定义的范围内访问)。
我建议您按如下方式更改代码:
import sys
# Function creates a list [1,3,5..99]
def createlist():
odd_list = []
for i in range(1, 100, 2):
odd_list.append(i)
return(odd_list)
# Function asks for an odd integer between 1..100
def numberinsert():
num_list = createlist()
n = int(input("Please enter an odd number between 1 and 100: "))
if n in num_list:
return(n)
else:
sys.exit("Number does not match requirements!")
def main():
numberinsert()
作为旁注,尽量避免使用内置函数的名称命名变量(如 list
)。
您还可以以更紧凑的方式编写代码,直接在 numberinsert
函数中使用 range(1, 100, 2)
:
# Function asks for an odd integer between 1..100
def numberinsert():
n = int(input("Please enter an odd number between 1 and 100: "))
if n in range(1, 100, 2):
return(n)
else:
sys.exit("Number does not match requirements!")
def main():
numberinsert()
您将列表命名为列表。 List 是一个数据类型名称(我的意思是它是一个关键字)。 list1 或其他名称可解决该错误。我将您的 list1 变量全球化。我不确定全球化部分,但如果我错了请警告我。这是我的第一个回复。
import sys
# Function creates a list [1,3,5..99]
def createlist():
global list1
list1 = []
for i in range(1, 100, 2):
list1.append(i)
return list1
# Function asks for an odd integer between 1..100
def numberinsert():
n = int(input("Please enter an odd number between 1 and 100: "))
if n in list1:
return n
else:
sys.exit("Number does not match requirements!")
def main():
createlist()
numberinsert()
main()
我刚开始 Python,我有一个简短的问题。
import sys
# Function creates a list [1,3,5..99]
def createlist():
list = []
for i in range(1, 100, 2):
list.append(i)
return(list)
# Function asks for an odd integer between 1..100
def numberinsert():
n = int(input("Please enter an odd number between 1 and 100: "))
if n in list:
return(n)
else:
sys.exit("Number does not match requirements!")
def main():
createlist()
numberinsert()
它给了我这个:TypeError: argument of type 'type' is not iterable
我做错了什么?
您正试图从另一个函数 numberinsert
访问函数 createlist
的局部变量,但这是不可能的(局部变量只能在它们定义的范围内访问)。
我建议您按如下方式更改代码:
import sys
# Function creates a list [1,3,5..99]
def createlist():
odd_list = []
for i in range(1, 100, 2):
odd_list.append(i)
return(odd_list)
# Function asks for an odd integer between 1..100
def numberinsert():
num_list = createlist()
n = int(input("Please enter an odd number between 1 and 100: "))
if n in num_list:
return(n)
else:
sys.exit("Number does not match requirements!")
def main():
numberinsert()
作为旁注,尽量避免使用内置函数的名称命名变量(如 list
)。
您还可以以更紧凑的方式编写代码,直接在 numberinsert
函数中使用 range(1, 100, 2)
:
# Function asks for an odd integer between 1..100
def numberinsert():
n = int(input("Please enter an odd number between 1 and 100: "))
if n in range(1, 100, 2):
return(n)
else:
sys.exit("Number does not match requirements!")
def main():
numberinsert()
您将列表命名为列表。 List 是一个数据类型名称(我的意思是它是一个关键字)。 list1 或其他名称可解决该错误。我将您的 list1 变量全球化。我不确定全球化部分,但如果我错了请警告我。这是我的第一个回复。
import sys
# Function creates a list [1,3,5..99]
def createlist():
global list1
list1 = []
for i in range(1, 100, 2):
list1.append(i)
return list1
# Function asks for an odd integer between 1..100
def numberinsert():
n = int(input("Please enter an odd number between 1 and 100: "))
if n in list1:
return n
else:
sys.exit("Number does not match requirements!")
def main():
createlist()
numberinsert()
main()