注意:这不是我的功课。 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个数字存储在列表中。
答案 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)
在您的解决方案中存在多个缺陷。
number=raw_input():
中的冒号。 raw_input
返回一个字符串,您必须将其转换为int
。 10
开始并比较10 <= 10
。在下一次迭代中,它将是11 <= 10
并完成。 even_number % 2
提供0
,odd_number % 2
提供1
。 biggest_number
)。只测试此变量是否小于输入的变量。 一个有效的解决方案是:
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结合到一个循环中。但既然你说你是初学者我就是这样写的。