我正在编写一个程序,要求用户输入 10 个整数,然后指向其中最大的奇数。如果没有输入奇数,则应为此打印一条消息。
我已经拥有的如下:
a = int(input("Enter an integer: "))
b = int(input("Enter an integer: "))
c = int(input("Enter an integer: "))
d = int(input("Enter an integer: "))
e = int(input("Enter an integer: "))
f = int(input("Enter an integer: "))
g = int(input("Enter an integer: "))
h = int(input("Enter an integer: "))
i = int(input("Enter an integer: "))
j = int(input("Enter an integer: "))
numset = [a, b, c, d, e, f, g, h, i, j]
oddset = []
if (a%2, b%2, c%2, d%2, e%2, f%2, g%2, h%2, i%2, j%2) == (0, 0, 0, 0, 0, 0, 0, 0, 0, 0):
print("No odd number was entered.")
else:
for x in numset:
if x%2 == 1:
oddset.append(int(x))
print(oddset)
我能够识别所有输入的奇数,但是当涉及到从我称为 oddset 的奇数列表中挑选出最大的时,我感到困惑。这可能是一个简单的补充,但我是 python 的新手,所以感谢所有的帮助。另外,如果有更简洁的替代代码编写方法,我也很乐意看到这些方法。
你可以简化这一点。创建一个赔率列表,然后您可以使用它来检查它是否为空以及找到它max
:
numset = [int(input("Enter an integer: ")) for _ in range(10)] # list
# or
numset = {int(input("Enter an integer: ")) for _ in range(10)} # set
# or most space efficient, not storing non-odds at all
numset = (int(input("Enter an integer: ")) for _ in range(10)) # lazy iterator
odds = [n for n in numset if n % 2]
try:
print(max(odds))
except ValueError:
print("No odd number was entered.")