[英]Python, what am I doing wrong?
我是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()
正如@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到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
上面是一个基本脚本。 通常,您还可以验证用户输入,并且同时只能在列表中放入奇数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.