如何在python 3.5上创建一个程序,用户输入10个整数

时间:2016-02-06 23:22:33

标签: python loops integer

用户将输入10个整数,作为回报,程序将告诉用户哪个是输入的10的最大奇数。我已经为下面的工作粘贴了脚本。我的工作的问题是,当最大的数字是偶数它返回错误时,我怎么能让python忽略最大的偶数并继续下一个最大的奇数。

n1 = int(input('enter integer 1: '))
n2 = int(input('enter integer 2: '))
n3 = int(input('enter integer 3: '))
n4 = int(input('enter integer 4: '))
n5 = int(input('enter integer 5: '))
n6 = int(input('enter integer 6: '))
n7 = int(input('enter integer 7: '))
n8 = int(input('enter integer 8: '))
n9 = int(input('enter integer 9: '))
n10 = int(input('enter integer 10: '))

if n1%2!=0:
    a=n1
if n2%2!=0:
    b=n2
if n3%2!=0:
    c=n3
if n4%2!=0:
    d=n4
if n5%2!=0:
    e=n5
if n6%2!=0:
    f=n6
if n7%2!=0:
    g=n7
if n8%2!=0:
    h=n8
if n9%2!=0:
    i=n9
if n10%2!=0:
    j=n10

if n1>n2 and n1>n3 and n1>n4 and n1>n5 and n1>n6 and n1>n7 and n1>n8 and n1>n9 and n1>n10:
    print(n1, 'is the largest odd number')
if n2>n1 and n2>n3 and n2>n4 and n2>n5 and n2>n6 and n2>n7 and n2>n8 and n2>n9 and n2>n10:
    print(b, 'is the largest odd number')
if n3>n1 and n3>n2 and n3>n4 and n3>n5 and n3>n6 and n3>n7 and n3>n8 and n3>n9 and n3>n10:
    print(c, 'is the largest odd number')
if n4>n1 and n4>n2 and n4>n3 and n4>n5 and n4>n6 and n4>n7 and n4>n8 and n4>n9 and n4>n10:
    print(d, 'is the largest odd number')
if n5>n1 and n5>n2 and n5>n3 and n5>n4 and n5>n6 and n5>n7 and n5>n8 and n5>n9 and n5>n10:
    print(e, 'is the largest odd number')
if n6>n1 and n6>n2 and n6>n3 and n6>n4 and n6>n5 and n6>n7 and n6>n8 and n6>n9 and n6>n10:
    print(f, 'is the largest odd number')
if n7>n1 and n7>n2 and n7>n3 and n7>n4 and n7>n5 and n7>n6 and n7>n8 and n7>n9 and n7>n10:
    print(g, 'is the largest odd number')
if n8>n1 and n8>n2 and n8>n3 and n8>n4 and n8>n5 and n8>n6 and n8>n7 and n8>n9 and n8>n10:
    print(h, 'is the largest odd number')
if n9>n1 and n9>n2 and n9>n3 and n9>n4 and n9>n5 and n9>n6 and n9>n7 and n9>n8 and n9>n10:
    print(i, 'is the largest odd number')
if n10>n1 and n10>n2 and n10>n3 and n10>n4 and n10>n5 and n10>n6 and n10>n7 and n10>n8 and n10>n9:
    print(j, 'is the largest odd number')

3 个答案:

答案 0 :(得分:4)

我不完全确定你遇到了什么问题以及你得到了什么错误,但你应该真正考虑使用循环。像这样:

odd_numbers = []
for i in range(1, 11):
    input = int(input('enter integer {}: '.format(i)))
    if input % 2:
        odd_numbers.append(input)

if odd_numbers:
    print('{} is the largest odd number'.format(max(odd_numbers)))
else:
    print('There were no odd numbers entered')

通常我会将此作为评论撰写,但希望帮助OP了解如何使用循环

答案 1 :(得分:0)

您的代码遇到的第一个问题是,当您尝试打印代码时,可能无法定义j

话虽如此,您的代码确实需要重构。查看列表,循环,生成器和max函数。开始尝试修复代码是毫无意义的。

以下是对简明版本的建议:

def max_odd():
    prompt = 'enter integer {}: '
    entered = (int(input(prompt.format(i+1))) for i in range(10))
    try:
        return max(x for x in entered if x%2)
    except ValueError: # no odd number
        return None

演示:

>>> max_odd()
enter integer 1: 1
enter integer 2: 2
enter integer 3: 3
enter integer 4: 4
enter integer 5: 5
enter integer 6: 6
enter integer 7: 7
enter integer 8: 8
enter integer 9: 9
enter integer 10: 10
9

答案 2 :(得分:0)

考虑做以下事情:

maximum=0 #Variable to store the maximum. Since this is even, if we get to the end of the program and it's still 0, we can be sure there were no odd numbers entered.
for i in range(1,11): #Loop from i=1 to i=10
    n=int(input 'enter integer: {}'.format(i)) #Ask for an integer input
    if (n%2) != 0: #If the number is odd
        if maximum==0 or n>maximum: #Then if it is bigger than the old maximum or it's the first odd number
            maximum=n #Then set it as the new maximum
if (maximum != 0): #If any odd numbers were entered
    print(maximum, ' is the largest odd number') #Output the biggest
else: #If none of the numbers were odd
    print('all input numbers were even') #Then complain