gpt4 book ai didi

python - 初始化整数变量以进行比较

转载 作者:行者123 更新时间:2023-11-28 19:52:42 25 4
gpt4 key购买 nike

我正在学习 MIT 开放课件类(class) Introduction to Computer Science and Programming in Python我花了很多时间来思考教科书上的“手指练习”:

Write a program that examines three variables—x, y, and z—and prints the largest odd number among them. If none of them are odd, it should print a message to that effect.

我写了几个不太有效的解决方案,如果有更大的偶数,就会漏掉奇数。我终于认输了,并在这里搜索其他在这门课上工作的人提出的解决方案。 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'

我在谷歌上搜索了一下,说 Python 2 在允许比较 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)。我正在尝试逐步完成这些内容。

最佳答案

None 如果您要这样做的话,似乎没问题。 (我会说这比使用大的负数更安全。)您可以使用 None 来避免代码重复,例如

if largest is None or y > largest:
largest = y

一些事情,与 Noneis 比较。其次,如果 or 的第一部分为 True,则不会执行第二部分(称为短路),因此您在尝试比较 None 时不会出错 使用 >

关于python - 初始化整数变量以进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51697030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com