在另一个函数(Python)中使用的返回值
我想写两个函数。一种从用户处获取输入并将其添加到列表中的函数。第二个函数获取从第一个函数返回的列表,并打印出每个元素,每个元素之间用空格分隔。我想我很接近,但有些地方不对劲。键入-999不会停止循环,我也不知道是否正确调用了函数 有什么想法吗在另一个函数(Python)中使用的返回值,python,function,Python,Function,我想写两个函数。一种从用户处获取输入并将其添加到列表中的函数。第二个函数获取从第一个函数返回的列表,并打印出每个元素,每个元素之间用空格分隔。我想我很接近,但有些地方不对劲。键入-999不会停止循环,我也不知道是否正确调用了函数 有什么想法吗 def listFunc(): num = 0 list1 = [] while num != -999: x = int(input('Enter a number, -999 to quit: '))
def listFunc():
num = 0
list1 = []
while num != -999:
x = int(input('Enter a number, -999 to quit: '))
list1.append(x)
return list1
def formatFunc(y):
final = str(y)
' '.join(final)
print(final)
formatFunc(listFunc())
它应该与while循环中使用的变量相同
num = int(input('Enter a number, -999 to quit: '))
if num != -999:
list1.append(num)
及
它应该与while循环中使用的变量相同
num = int(input('Enter a number, -999 to quit: '))
if num != -999:
list1.append(num)
及
会有用的
会有用的 如果要打印listfunc的输入,则正确调用函数。但是,输入不会保存到全局范围内的变量,因此将被锁定,不供将来使用 此外,listfunc目前不进行输入验证。可以在输入中输入任何字符串。while循环不会结束,因为while中的条件从未满足。 根据您的条件重写它会产生:
def listfunc():
someList = []
while True:
x = input("Enter a number, exit to quit")
if 'exit' in x.lower():
break
elif x.isdigit():
someList.append(x)
else:
print("Input not recognized try again")
return someList
def formatFunc(v):
print(''.join(str(i) + ' ' for i in v)
你明白为什么会这样吗?如果你想打印listfunc的输入,那么你调用的函数是正确的。但是,输入不会保存到全局范围内的变量,因此将被锁定,不供将来使用 此外,listfunc目前不进行输入验证。可以在输入中输入任何字符串。while循环不会结束,因为while中的条件从未满足。 根据您的条件重写它会产生:
def listfunc():
someList = []
while True:
x = input("Enter a number, exit to quit")
if 'exit' in x.lower():
break
elif x.isdigit():
someList.append(x)
else:
print("Input not recognized try again")
return someList
def formatFunc(v):
print(''.join(str(i) + ' ' for i in v)
你明白为什么这样做了吗?你设置了
num=0
,但没有在循环中更新它。如果要理顺num
和x
之间的变量名,您将看到我怀疑的不同结果。投票以键入方式关闭。您正在比较用户输入的num
而不是x
。接收对num
的输入。另外,'.join(final)
不会更改任何内容,除非您将其分配回final
。您设置了num=0
,并且不在循环中更新它。如果要理顺num
和x
之间的变量名,您将看到我怀疑的不同结果。投票以键入方式关闭。您正在比较用户输入的num
而不是x
。接收对num
的输入。另外,'.join(final)
不会更改任何内容,除非您重新分配到final
。感谢Vishnudev-输出仍然是一个逗号分隔的列表(现在有一个空格),但这让我更接近我的本来面目expecting@JD2775你注意到了吗?我注意到了,谢谢。当我取出它时,它会在追加bingo时错误地说应该是str instance,int foundPut str(num)!成功了。非常感谢。感谢Vishnudev-输出仍然是一个逗号分隔的列表(现在有一个空格),但这让我更接近我的本来面目expecting@JD2775你注意到了吗?我注意到了,谢谢。当我取出它时,它会在追加bingo时错误地说应该是str instance,int foundPut str(num)!成功了。非常感谢。谢谢@GlobalTraveler。输入验证部分是有意义的,我需要一些东西来打破循环,如您所示。尽管您提到“输入不会保存到全局范围内的变量,因此将被锁定,不供将来使用”,我还是感到困惑。我不确定我是否理解它。在您的版本中,似乎正在listFunc中定义并返回someList[]。和我一样。是否有什么东西可以使其全局访问,或者您只是提醒我,整体结构需要将其移出func?假设您希望重用用户输入的输入,您希望将结果存储到列表中,即inputs=listfunc();formatfunc(输入)。然后这些输入就可以用于其他目的。这是一个小问题,与你最初的问题无关。啊,我明白你的意思。我刚试过。这很有道理,也消除了我一段时间以来的困惑(与这个问题无关)。谢谢谢谢@GlobalTraveler。输入验证部分是有意义的,我需要一些东西来打破循环,如您所示。尽管您提到“输入不会保存到全局范围内的变量,因此将被锁定,不供将来使用”,我还是感到困惑。我不确定我是否理解它。在您的版本中,似乎正在listFunc中定义并返回someList[]。和我一样。是否有什么东西可以使其全局访问,或者您只是提醒我,整体结构需要将其移出func?假设您希望重用用户输入的输入,您希望将结果存储到列表中,即inputs=listfunc();formatfunc(输入)。然后这些输入就可以用于其他目的。这是一个小问题,与你最初的问题无关。啊,我明白你的意思。我刚试过。这很有道理,也消除了我一段时间以来的困惑(与这个问题无关)。谢谢