[英]Short code with loop, function and list isn't working.Much appreciated if you help. (New at Python)
刚开始学习python,所以非常感谢能提供帮助的人。
无论如何,任务是定义一个 function,它接受一个数字列表并返回 3 个值——列表中有多少个正数、负数和零。
主程序我需要使用一个循环让用户输入他想要的任意数量的数字(必须在 3 到 6 之间,并且必须检查)。 用户输入的这些数字将被添加到列表中。 然后我必须调用一个使用列表作为参数的 function,然后打印 function 返回的结果。
使用循环是强制性的。
def three(z):
np = 0
nn = 0
zeroes = 0
for y in z:
if x<0:
nn+=1
if x>0:
np+=1
if x==0:
zeroes+=1
print('there are ', np, ' positive numbers\nthere are ', nn, ' negative numbers\nthere are ', zeroes, ' zeros')
return (np, nn, zeroes)
num_list = []
a = 0
n = eval(input('input a number (bigger than 3, smaller than 6): '))
while n>3 and n<6:
if a < n:
x = eval(input('input a number: '))
num_list.append(x)
a+= 1
else:
break
three(num_list)
我做了一个循环和一个 function,但我很确定我在循环或其他地方搞砸了,因为看起来我使用了很多变量,而且看起来比它应该的更复杂。
首先,您应该避免使用eval
来获取用户输入的数值。 Ignatius Reilly 在评论中留下了一个很好的链接来解释原因。 相反,只需使用int(input(...))
将字符串输入转换为 int。
其次,问题是您将x
与零进行比较。 x
未在您的 function 中定义,因此它在 function scope 之外查找,然后将您定义为x
的内容拉到那里,这是来自x = eval(input(...))
的最后一个用户输入。 因此,输入-1, 2, 0, 4
的用户将返回 (4、0、0),因为它只是将 4 与 0 进行四次比较,而不是每次单独输入。 您在这里犯了一个简单的错误,应该在您的if
语句中使用y
。
使用for-in-range
循环执行代码 n 次。
使用int()
将用户输入转换为 integer,而不是eval()
。
n = int(input("Input a number between 3 and 6: ")
if 3 <= n <= 6:
nums = []
for _ in range(n):
x = int(input("Input a number: "))
nums.append(x)
print(three(list))
else:
print("That's out of the range")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.