从用户那里获取数字,将其放在列表中,然后找到最大的奇数

时间:2019-09-19 13:32:06

标签: python-3.x

我是Python 3的初学者。我想:

  1. 向用户询问10个数字并将其放在列表中
  2. 检查最大的奇数

以下代码只是将最后一个数字放在值(数字)中 而且我不知道如何检查最大的奇数:

for i in range(1,11):
    number = list((input(f"please enter the {i}th number: ")))
print(number)

2 个答案:

答案 0 :(得分:0)

要创建用户给出的数字列表,我们使用带input的for循环来询问数字,就像您几乎正确地做过的一样(不要忘记强制转换为int):

numbers = []
for i in range(1, 11):
    number = int(input(f"Enter number {i}: "))
    numbers.append(number)

您也可以通过列表理解来做到这一点,这会使它更短,但一开始可能会更难理解(结果与前面的代码完全一样):

numbers = [int(input(f"Enter number {i}: ")) for i in range(1, 11)]

现在,要从数字列表中获取最大的奇数,您可以:

  • 将变量设置为可能的最小值或设置为None
  • 遍历您的列表
  • 如果数字是奇数且大于保存在变量中的数字,请更新变量的值

考虑到您拥有数字numbers的清单,让我们看看实际情况。

odd_largest = 0
for number in numbers:
  if number % 2 != 0 and number > odd_largest:  # If number is odd and larger
    odd_largest = number                        # update value
print(odd_largest)

odd_largest设置为0None有什么区别?如果将其设置为0,并且odd_largest的最终值为0,您将不知道它是否已全部更新,是列表中的数字还是原始值?想象一下,例如,列表中没有奇数。

使用None作为初始值时,您将确定它是否已更新。您还需要添加其他条件:

odd_largest = None
for number in numbers:
  if number % 2 != 0 and (odd_largest is None or number > odd_largest):  # If number is odd and larger or None
    odd_largest = number
print(odd_largest)

将所有内容放在一起就能得到所需的东西。

numbers = [int(input(f"Enter number {i}: ")) for i in range(1, 11)]
odd_largest = None
for number in numbers:
  if number % 2 != 0 and (odd_largest is None or number > odd_largest):  # If number is odd and larger or None
    odd_largest = number
print(odd_largest)

这里出现了一些问题。首先:我们是否将列表numbers用于其他任何操作?如果答案是肯定的,那么我们的代码就足够了。但是,如果只需要这些,我们实际上可以做得更好。

通过在用户输入后立即比较数字来查找最大的奇数,甚至不创建列表。让我们看看吧!

odd_largest = None
for i in range(1, 11):
    number = int(input(f"Enter number {i}: "))
    if number % 2 != 0 and (odd_largest is None or number > odd_largest):
        odd_largest = number
print(odd_largest)

我们从中得到什么?仅对数字进行一次迭代而不是两次,从而节省了内存,因为我们不保存仅输入一个数字的所有数字。酷吗?

如果您还有其他疑问,请不要犹豫。编码愉快!

答案 1 :(得分:0)

1)从用户那里获取整数列表

my_list = []
for i in range(1, 11):
    my_list.append(int(input(f"please enter the {i}th number: ")

2)从列表that aren't odd删除所有数字

my_list_only_odd_numbers = [n for n in my_list if n % 2]

3)使用max()

返回列表中最大的数字
largest_odd_number = max(my_list_only_odd_numbers)