import random
numbers = int(input("Please, enter number {}: ".format(i+1)) for i in range(7))
# will display prompt like "Please, enter number 1:"
print ("numbers entered:"), numbers # this will print the entered numbers
positives = [num for num in numbers if num > 0]
negatives = [num for num in numbers if num < 0]
# loop ends here
print ("Sum of negative numbers is :", sum(negatives))
print ("Average negative number is :", sum(negatives)*1.0/len(negatives))
print ("Sum of positive numbers is :", sum(positives))
print ("Average positive number is :", sum(positives)*1.0/len(positives))
我的问题是,当我在空闲中运行时,我收到以下错误: “int()参数必须是字符串或数字,而不是'生成器' 不知道如何解决这个问题...我知道在使用python 3时我必须在输入之前使用(int)来调用整数,但我不确定如何使其工作。
答案 0 :(得分:2)
如错误所示,int
不支持生成器表达式。但是,你试着在这里给它一个:
numbers = int(input("Please, enter number {}: ".format(i+1)) for i in range(7))
以上代码与此相同:
numbers = int(
# This is a generator expression
input("Please, enter number {}: ".format(i+1)) for i in range(7)
)
我认为你要做的是:
numbers = [int(input("Please, enter number {}: ".format(i+1))) for i in range(7)]
参见下面的演示:
>>> numbers = [int(input("Please, enter number {}: ".format(i+1))) for i in range(7)]
Please, enter number 1: 1
Please, enter number 2: 2
Please, enter number 3: 3
Please, enter number 4: 4
Please, enter number 5: 5
Please, enter number 6: 6
Please, enter number 7: 7
>>> numbers
[1, 2, 3, 4, 5, 6, 7]
>>>
答案 1 :(得分:0)
import random
numbers = []
for i in range(7):
numbers.append(int(input("Please, enter number {}: ".format(i+1))))
# will display prompt like "Please, enter number 1:"
print ("numbers entered:"), numbers # this will print the entered numbers
positives = [num for num in numbers if num > 0]
negatives = [num for num in numbers if num < 0]
# loop ends here
if len(negatives) > 0:
print ("Sum of negative numbers is :", sum(negatives))
print ("Average negative number is :", sum(negatives)*1.0/len(negatives))
if len(positives) > 0:
print ("Sum of positive numbers is :", sum(positives))
print ("Average positive number is :", sum(positives)*1.0/len(positives))
答案 2 :(得分:0)
该错误意味着它所说的 - int()
只接受字符串或对象,并且您尝试在生成器表达式上调用int。将它简化为更简单的一点,你说int( f(x) for x in range(7) )
与int( [1, 2, 3, 4, 5, 6, 7] )
一样有意义。 Python不会神奇地在列表(或生成器或迭代器或......)中应用函数。
虽然您可以通过添加一些字符(如其他海报所建议的那样)将其简单地投入到列表理解中,但这个问题的本质表明您只是在学习Python。编写丑陋,复杂的表达式是一种不好的习惯,使代码难以阅读/维护/扩展。为了便于阅读,您应该使用实际的循环。
numbers = []
for i in range(7):
prompt = "Please, enter number {}: ".format(i+1)
user_input = input(prompt)
user_num = int(user_input)
numbers.append(user_num)
它占用了更多的行,但更容易遵循或修改。假设您想删除输入或拒绝素数的数量限制 - 您认为您能够轻松地使用原始版本吗?