如何比较输入的数字而不将它们存储在列表中

时间:2014-09-03 14:12:35

标签: python

注意:这不是我的功课。 Python在我的大学里没有教过,所以我自己从MITOCW那里学习。

到目前为止,我已经介绍了while循环,输入和放大器打印

Q)编写一个要求输入10个整数的程序,然后打印输入的最大奇数。如果没有输入奇数,它应该打印一条消息到效果

如何比较这10个数字而不将它们存储在某个列表或其他内容中?因为我还没有把它包括在内。

print "Enter 10 numbers: "
countingnumber=10
while countingnumber<=10:
    number=raw_input():
    if number % 2 == 0:
         print "This is odd"
         countingnumber=countingnumber+1
    else:
         print "This is even. Enter the odd number again"

我认为该程序看起来像这样。但这有一些未知的错误&amp;如何比较所有数字以获得最大的奇数而不将这10个数字存储在列表中。

5 个答案:

答案 0 :(得分:2)

print "Enter 10 numbers: "
countingNumber = 1
maxNumber = 0
while countingNumber<=10:
        number=int(raw_input())
        if (number % 2 == 0):
                countingNumber = countingNumber+1
                        if (maxNumber < number):
                                maxNumber = number
        else:
                print "This is even. Enter the odd number again"
print "The max odd number is:", maxNumber

答案 1 :(得分:2)

在您的解决方案中存在多个缺陷。

  1. 语法错误:number=raw_input():中的冒号。
  2. raw_input返回一个字符串,您必须将其转换为int
  3. 您的while循环只运行一次,因为您从10开始并比较10 <= 10。在下一次迭代中,它将是11 <= 10并完成。
  4. 你也混合了奇数。 even_number % 2提供0odd_number % 2提供1
  5. 要获得最大价值,您只需要一个额外的变量来存储它(请参阅我的解决方案中的biggest_number)。只测试此变量是否小于输入的变量。
  6. 你再次询问这个数字是不是奇数,但你应该取每个数字并仅测试奇数。
  7. 一个有效的解决方案是:

    print "Enter 10 numbers"
    
    count = 0
    max_numbers = 10
    biggest_number = None
    
    while count < max_numbers:
        number=int(raw_input("Enter number {0}/{1}: ".format(count + 1, max_numbers)))
        if number % 2 == 1:
            if biggest_number is None or number > biggest_number:
                biggest_number = number
    
        count += 1
    
    if biggest_number is None:
        print "You don't entered a odd number"
    else:
        print "The biggest odd number is {0}".format(biggest_number)
    

    如果您想知道字符串后的格式是什么,请查看docs。简而言之:它将{0}替换为format中的第一个语句,{1}替换为{{1}},依此类推。

答案 2 :(得分:2)

你可以定义一个maxnum变量并保存最大值!您还必须使用int(raw_input())代替raw_input()

print "Enter 10 numbers: "
maxnum=0
for i in range(10):
    number=int(raw_input())
    if number%2 == 0:
        print "This is odd"
        if number>maxnum:
         maxnum=number
    else:
         print "This is even. Enter the odd number again"
print "max odd is :{0}".format(maxnum)

样本:

Enter 10 numbers: 
2
This is odd
4
This is odd
6
This is odd
8
This is odd
12
This is odd
14
This is odd
16
This is odd
100
This is odd
2
This is odd
4
This is odd
max odd is :100

答案 3 :(得分:2)

每当我做输入时,我都希望确保不会为人为错误留出空间给我带来错误。

因为我进行了额外的检查,所以我将代码分解为许多单独的函数。这也为代码提供了非耦合的质量。 ie)你可以在其他程序中重复使用!!

def input_number():
    while true:
        input = raw_input("Enter Value: ")
        if not input.isdigit():
            print("Please enter numbers only!")
        else:
            return int(input)

以这种方式设计输入函数会使代码无法崩溃。我们现在可以在函数中使用它来得到奇数!

def input_odd_number():
    while true:
        input = input_number()
        if input % 2 == 0:
            print("Please enter odd numbers only!")
        else:
            return input

现在我们终于可以转到主代码了。我们知道我们需要十个数字所以让我们做一个for循环。我们现在还需要保持最大的奇数,所以让我们创建一个变量来保存该值

def largest_odd(count = 10): // its always nice to make variables dynamic. The default is 10, but you can change it when calling!
    max_odd = input_odd_number() // get the first odd number
    for i in range(count - 1): // we already found the first one, so we need 1 less
        new_odd = input_odd_number()
        if new_odd > max_odd:
            max_odd = new_odd
    print("The largest odd value in '{}' inputs was: {}".format(count, max_odd)

答案 4 :(得分:1)

这是正确的代码:

print "Enter 10 numbers: "
countingnumber=1
MAX=-1
while countingnumber<=10:
    number=int(raw_input())
    if number%2==1:
        if number>MAX:
            MAX=number
if MAX==-1:
    print "There Weren't Any Odd Numbers"
else:
    print MAX

这里有一些关于你的错误的说明:
1-你应该使用int()函数将原始输入转换为整数,并且不需要调用函数后的列,因此语法错误
2-你的while循环只迭代一次,因为你的初始计数是10,经过一次迭代后它会大于10并且while体将被跳过。
3 - 偶数是一个在除以2时没有提醒的数字,但你写的正好相反 4-你不需要在while循环中打印任何东西,你应该打印最大的奇数或打印&#34;那里有任何奇数&#34;。
为了保存MAX的最大奇数,需要另外一个变量 最后一点:在上面提供的代码中,您可以使用&#39;和&#39;将while循环中的两个if结合到一个循环中。但既然你说你是初学者我就是这样写的。