【问题标题】:Comparing digits in a list to an integer, then returning the digits将列表中的数字与整数进行比较,然后返回数字
【发布时间】:2013-03-01 06:51:53
【问题描述】:

我使用的是 python 版本 3。

对于家庭作业,我试图允许用户输入五位数,然后找到这些位数的平均值。我已经弄清楚了那部分(花了一个小时学习地图功能,非常酷)。

问题的第二部分是将列表中的每个单独元素与平均值进行比较,然后返回大于平均值的元素。

我认为底部的“如果有”会将列表中的数字与平均值进行比较,但我不知道如何提取该值来打印它。你们为所有的帮助而摇滚。

#Creating a list
my_numbers = [input("Enter a number: ") for i in range(5)]

#Finding sum
Total = sum(map(int, my_numbers))

#Finding the average
Average = Total/5

print ("The average is: ")
print (Average)
print ("The numbers greater than the average are: ")

if any in my_numbers > Average:

【问题讨论】:

  • 请注意 [input("Enter a number: ") for i in range(5)] 可以更改为在输入时转换为数字(稍后使用地图保存) - 例如:[int(input("Enter a number: ")) for i in range(5)]

标签: python list python-3.x


【解决方案1】:
#Creating a list
my_numbers = []
r = range(5)
for i in r:
    try:
        my_numbers.append(int(input("Enter a number: ")))
    except:
        print( 'You must enter an integer' )
        r.append(i)

#Finding sum
Total = sum(my_numbers)

#Finding the average
Average = Total/5
print ("The average is: ")
print (Average)
print ("The numbers greater than the average are: ")
print ([x for x in my_numbers if x>Average])

我敢肯定,即使没有人回答,您最终也会成功编写代码。

我的代码实际上是要指出您应该预见条目可能是非整数,然后放置指令管理条目错误。
这里的基本方式是使用try except

注意我每次发生错误时我将i添加到r的方式,以弥补r的元素已被消耗。

【讨论】:

  • 所以,非整数代码...我看不出尝试在做什么。它只是试图将输入附加到列表中,对吗?如果它不是整数,是否添加了 (int 告诉它不接受它?
  • 也非常感谢您的帮助!
  • 一旦指令int(input("Enter a number: ")) 被正确执行,附加其结果的可能性很小。所以try是为了确保输入到整数的转换是正确执行的。
【解决方案2】:

不幸的是,“如果有的话”不起作用。查看 any 函数的文档以了解它的作用。即使您的语法正确,它也不会做您想做的事。你想要的只是大于平均值的数字。您可以使用列表理解:[my_numbers 中数字的数字,如果数字 > 平均值]。或者你可以使用循环。

【讨论】:

    【解决方案3】:

    您需要做的是遍历列表并打印出高于平均值的数字:

    for i in my_numbers:
        if int(i) > Average:
            print(i)
    

    为了使事情更简单,您可能还希望将my_numbers 列表实际上开始作为整数列表:

    my_numbers = [int(input("Enter a number: ")) for i in range(5)]
    

    现在我们可以去掉map 函数(别担心,时间并没有浪费,你会发现它在其他情况下也很有用)。您也可以直接计算平均值而不计算总数,因为您不再需要总数。

    Average = sum(my_numbers) / 5
    

    这意味着您可以更改for 循环,以便将int(i) 替换为i

    您还可以使用列表推导式创建一个列表,然后打印出该列表中的值。

    aboveAverage = [i for i in my_numbers if i > Average]
    for i in aboveAverage:
        print i
    

    【讨论】:

    • 感谢您的帮助。我不断看到人们在这些循环中使用“i”。我原以为这只是一封方便的信,但似乎不止于此。它有什么特殊功能吗?
    • 另外,我试图从一开始就将列表设置为 int,但一直出错。我把结束括号放在 5 之后,而不是在输入之后。非常感谢
    • @RKSiegel 不,i 只是一个约定——你可以用任何你喜欢的东西替换它。您可以通过引用它在循环内访问它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 2020-07-06
    • 2013-06-29
    相关资源
    最近更新 更多