Python 函数仅返回列表的第一个输入,而不在输入中继续,超出了范围
我对编码非常陌生(大约在中的3周内),我正在编写一个代码,要求用户输入一个介于0和100之间的数字,然后将该数字添加到列表中。一旦列表长度达到10个数字,它就应该打印列表。我正在使用一个函数来解决这个问题 我可以把它打印出来,但它只打印输入的第一个数字。例如,如果我输入5,它仍然会要求输入其他数字,但它会将列表打印为[5,5,5,5,5,5,5]。此外,如果我输入的数字超出了0-100的范围,它会要求您输入一个不同的数字,但随后它会停止并将列表打印为“无” 下面是我的代码:Python 函数仅返回列表的第一个输入,而不在输入中继续,超出了范围,python,python-3.x,list,Python,Python 3.x,List,我对编码非常陌生(大约在中的3周内),我正在编写一个代码,要求用户输入一个介于0和100之间的数字,然后将该数字添加到列表中。一旦列表长度达到10个数字,它就应该打印列表。我正在使用一个函数来解决这个问题 我可以把它打印出来,但它只打印输入的第一个数字。例如,如果我输入5,它仍然会要求输入其他数字,但它会将列表打印为[5,5,5,5,5,5,5]。此外,如果我输入的数字超出了0-100的范围,它会要求您输入一个不同的数字,但随后它会停止并将列表打印为“无” 下面是我的代码: def getUse
def getUser(n):
mylist = []
while 0 < n < 100:
mylist.append(n)
int(input("Please enter a number between 0 and 100: "))
if len(mylist) == 10:
return(mylist)
else:
int(input("This number is not in the range of 0-100, please input a different number: "))
n = int(input("Please enter a number between 0 and 100: "))
print("The numbers you have entered are: ", getUser(n))
def getUser(n):
mylist=[]
当0
我猜这与while/else循环有关,但正如我所说的,我对这是一个新手,它让我感觉非常难以承受,尝试谷歌搜索这一切似乎带来了我不理解的超级复杂的事情!!谢谢这就是你做错的地方
def getUser(n):
mylist = []
while 0 < n < 100:
mylist.append(n)
n = int(input("Please enter a number between 0 and 100: "))
if len(mylist) == 10:
return(mylist)
else:
int(input("This number is not in the range of 0-100, please input a different number: "))
n = int(input("Please enter a number between 0 and 100: "))
print("The numbers you have entered are: ", getUser(n))
def getUser(n):
mylist=[]
当0
您注意到编辑的代码有什么不同吗
您从未重新分配变量n
因此,每次只需添加传递给getUser
的任何值(每次都是相同的值)
如果你陷入困境,不要害怕寻求帮助
附言。
您还可以将一条线移动到其他地方,以便在您能够接受挑战的情况下使其表现得更好;) 首先:为什么你会得到[5,5,5,5,5,5,5,5,5]:
int(input("Please enter a number between 0 and 100: "))
您应该先将此项交给n:
n=int(input("Please enter a number between 0 and 100: "))
然后,它退出循环,因为您进入else
,然后在时不返回。然后您的函数结束,没有返回return
,因此none
老实说,我不明白如果你给出的数字超出了范围,为什么你的代码会超出而
循环,因为这个值不是给n的。如果有人能在评论中解释,那就太好了
我会这样做:
def getUser():
mylist=[]
而len(mylist)<10:
n=int(输入(“请输入一个介于0和100之间的数字:”)
如果(0
然后,系统会询问您从0到100(不包括在内)的数字,直到您得到10的大小。def getUser(n):
def getUser(n):
mylist = []
t = True
while t:
n =int(input("Please enter a number between 0 and 100: "))
if n >0 and n<=100:
mylist.append(n)
if len(mylist) == 10:
return(mylist)
t = False
elif n < 0 or n >100:
print('This number is not in the range of 0-100, please input a different number:')
mylist=[]
t=真
而t:
n=int(输入(“请输入一个介于0和100之间的数字:”)
如果n>0和n100:
打印('此数字不在0-100范围内,请输入其他数字:')
好的,您尝试在时使用,而不是如果。
以下是我将要做的-我将很快解释:
def get_user():
mylist=[]
对于范围(5)中的i:
n=int(输入(“请输入一个介于0和100之间的数字:”)
如果n为什么在while循环中再次请求输入,而不在任何变量中使用该输入/捕获?根据else:
的输入中的文本,可能还应该指出else:
案例会导致整个函数结束,这可能不是预期的结果。整个while
循环可能应该由if
替换,该if
封装在while True:
中。是的!解决OP问题的一种方法是,您可以将mylist
设置为具有默认值的参数,只需删除一行:)使用默认参数存在很大的缺陷,我必须警告您。在python中,强烈反对使用除None
之外的默认参数。真的吗?除了None之外,我不想使用任何默认参数,但是您介意将我链接到一个更详细的资源吗?啊,我想这是因为这种行为x=[];y=x;y、 附加(“测试”);打印(x);>['test']
如果我理解正确,当您创建分配给现有列表变量的列表变量时,它们都引用内存中相同的对象/地址,因此它们都共享相同的值。我相信您会这样做,以创建一个实际的列表副本,其中包含各自独立的内存空间x=[1,2,3];y=x[:];y、 追加(4);print(x)
iirc应该可以创建一个应该可以工作的copy,但是您不需要任何参数,并且t=False是无用的,因为您已经返回了。我真的不喜欢在循环过程中返回,但这完全是个人的。为什么要递减n?这对我们来说是一种误导OP@JackofSpades我打错了。我的意思是I=I-1
。我同意n=n-1
毫无意义。我已经为范围(10)内的I更新了答案:如果I==7,则打印(I):I=I-1
尝试在解释器中运行该代码。更改i
的值不会影响for循环的行为。此代码对OP有误导性。其原因是i
被重新分配到下一次迭代o
else:
i = i - 1