我正在学习麻省理工学院的开放式课件课程Introduction to Computer Science and Programming in Python,我花了很长一段时间试图把我的头围绕在教科书上的“手指练习”上:
编写一个程序,检查三个变量-x、y和z-并打印其中最大的奇数。如果它们都不奇怪,它应该打印一条消息来说明这一点。
我写了几个不太有效的解决方案,如果有更大的偶数,就会遗漏奇数。我最终认输了,在这里寻找解决方案,这是其他在这门课上工作的人所要求的。对我来说,This solution from AFDev似乎是最简单的(考虑到练习的目的和解决方案的简洁性)。我将其与我的用户输入相结合,以获得以下内容:
x=int(input('Enter your first number:'))
y=int(input('Enter your second number:'))
z=int(input('Enter your third number:'))
largest = None
if x%2:
largest = x
if y%2:
if y > largest:
largest = y
if z%2:
if z > largest:
largest = z
if largest:
print ('The largest odd number is', largest)
else:
print ('There are no odd numbers.')
只要x是奇数,这就很有效。如果x是零或偶数,我会得到以下错误:
TypeError: '>' not supported between instances of 'int' and 'NoneType'
我在谷歌上做的一些工作表明,Python2在NoneType
和整数之间的比较上更加自由。我更改了这一行以初始化largest = 0
,但随后意识到,如果用户输入负数,这将产生无效的结果。
我将代码调整为以下代码:
x=int(input('Enter your first number:'))
y=int(input('Enter your second number:'))
z=int(input('Enter your third number:'))
largest = None
if x%2:
largest = x
if y%2:
if largest == None:
largest = y
if y > largest:
largest = y
if z%2:
if largest == None:
largest = z
if z > largest:
largest = z
if largest:
print ('The largest odd number is', largest)
else:
print ('There are no odd numbers.')
有没有更好的方法来初始化“最大的”(因为没有更好的术语),以便我可以将它与整数进行比较,或者我做得足够好了吗?
我知道有更好的方法来比较这些数字以找到最大的(我在谷歌搜索时发现了max
)。我正试着一步一步地解决这个问题。
https://stackoverflow.com/questions/51697030
复制相似问题