我是python编程的新手,以及一般的编程/计算。我得到的一本书中的第一个练习中的一个说是制作一个要求10个数字的程序然后给出最大的奇数。我只是使用我所知道的,我想过使用一个列表,但我不太了解它们。
我确定有一种简单的方法可以做到这一点,如果可能的话告诉我,但是现在我想知道这个代码我做错了什么。我运行代码,当我进入1-10它说3是最大的奇数...... 我也手动运行代码,它似乎工作正常,但代码或我的逻辑中有错误...
print("Please Enter 10 digits")
num1=int(raw_input())
num2=int(raw_input())
num3=int(raw_input())
num4=int(raw_input())
num5=int(raw_input())
num6=int(raw_input())
num7=int(raw_input())
num8=int(raw_input())
num9=int(raw_input())
num10=int(raw_input())
number = 0
if num1>num2:
if num1 %2 !=0:
number=num1
elif num2 %2!=0:
number=num2
elif num3 >number:
if num3 %2 !=0:
number=num3
elif num4 >number:
if num4 %2 !=0:
number=num4
elif num5 > number:
if num5 %2 !=0:
number=num5
elif num6 >number:
if num6 %2 !=0:
number=num6
elif num7 > number:
if num7 %2 !=0:
number=num7
elif num8 > number:
if num8 %2 !=0:
number=num8
elif num9 > number:
if num9 %2 !=0:
number=num9
elif num10 > number:
if num10 %2 !=0:
number=num10
elif number == 0:
print ("No odd numbers entred")
print(number)
raw_input()
答案 0 :(得分:2)
正如@Jerry解释的那样,问题在于你使用elif
,它在第一个真实条件下退出而不考虑其他数字。
我想告诉你,你可以在Python中更简洁地做这些事情;一个例子是这个4班轮:
numbers = []
for i in range(10):
numbers.append(int(raw_input("number? ")))
print(max(filter(lambda e : e%2==1, numbers)))
答案 1 :(得分:1)
嗯,逻辑不太好......我们说我们使用了1到10.我在代码中添加了一些注释:
print("Please Enter 10 digits")
num1=int(raw_input())
num2=int(raw_input())
num3=int(raw_input())
num4=int(raw_input())
num5=int(raw_input())
num6=int(raw_input())
num7=int(raw_input())
num8=int(raw_input())
num9=int(raw_input())
num10=int(raw_input())
number = 0
if num1>num2: # "1 > 2" false
if num1 %2 !=0:
number=num1
elif num2 %2!=0: # "2 % 2 != 0" false
number=num2
elif num3 >number: # "3 > 0" true
if num3 %2 !=0: # "3 % 2 != 0" true and exit
number=num3
elif num4 >number:
if num4 %2 !=0:
number=num4
elif num5 > number:
if num5 %2 !=0:
number=num5
elif num6 >number:
if num6 %2 !=0:
number=num6
elif num7 > number:
if num7 %2 !=0:
number=num7
elif num8 > number:
if num8 %2 !=0:
number=num8
elif num9 > number:
if num9 %2 !=0:
number=num9
elif num10 > number:
if num10 %2 !=0:
number=num10
elif number == 0:
print ("No odd numbers entred")
print(number) # Print 3
现在看?您的代码甚至没有考虑其他数字。
如果要使用列表,您可能希望将每个数字附加到同一列表,从最大到最小排序并查找第一个奇数:
print("Please Enter 10 digits")
list_numbers = []
list_numbers.append(int(raw_input())) # Append number to the list list_numbers
list_numbers.append(int(raw_input()))
list_numbers.append(int(raw_input()))
list_numbers.append(int(raw_input()))
list_numbers.append(int(raw_input()))
list_numbers.append(int(raw_input()))
list_numbers.append(int(raw_input()))
list_numbers.append(int(raw_input()))
list_numbers.append(int(raw_input()))
list_numbers.append(int(raw_input()))
list_numbers.sort(reverse=True) # Sort the numbers in reverse
for i in list_numbers: # Loop...
if i % 2 != 0: # If odd...
print(i) # Print
break # Exit loop
以上是基本脚本。通常,您也可以验证用户输入,同时,您只能将奇数放在列表中。