Python 判断一个整数是奇数还是偶数

82 阅读3分钟

02. 判断一个整数是奇数还是偶数

我的原始代码如下,功能是判断一个用户输入的整数是奇数还是偶数:

def get_int_input(prompt):
	while True:
		try:
			return int(input(prompt))
		except ValueError:
			print("please input an integer!!!")

def is_even_odd(num):
	if num % 2 == 0:
		print("it is even")
	else:
		print("it is odd")

if __name__ == "__main__":
	num = get_int_input("please input an integer: ")
	is_even_odd(num)

大佬,如果用户输入的是 3.99,你用 int(input()) 读取并转换,会直接报错!

❗️原因如下:

python
复制编辑
int("3.99")

这个会报错:

csharp
复制编辑
ValueError: invalid literal for int() with base 10: '3.99'

因为 "3.99" 是字符串形式的小数int() 只能处理纯整数格式的字符串,比如 "3""42",不能包含小数点。

✅ 优化建议一:加入 float 判断能力

现在如果用户输入 3.5 会直接报错,可以考虑允许输入小数,并提醒用户:

python
复制编辑
def get_int_input(prompt):
    while True:
        try:
            user_input = input(prompt)
            if '.' in user_input:
                print("⚠️ 请输入整数,不要带小数点。")
                continue
            return int(user_input)
        except ValueError:
            print("❌ 无效输入,请输入一个整数!")

我们来详细分析一下这段代码中 continue 的作用,以及如果不加会发生什么:

✅ 当前代码逻辑回顾:

python
复制编辑
def get_int_input(prompt):
    while True:
        try:
            user_input = input(prompt)
            if '.' in user_input:
                print("⚠️ 请输入整数,不要带小数点。")
                continue  # 👈 关键点在这里
            return int(user_input)
        except ValueError:
            print("❌ 无效输入,请输入一个整数!")

🔍 continue 的作用:

  • 当用户输入如 "3.5",程序判断有小数点,不合法。

  • 如果没有 continue,程序会继续执行下面的 return int(user_input),然后就会报错:

    csharp
    复制编辑
    ValueError: invalid literal for int() with base 10: '3.5'
    
    

🧨 如果去掉 continue 会出现什么?

来看去掉后的代码(不推荐):

python
复制编辑
def get_int_input(prompt):
    while True:
        try:
            user_input = input(prompt)
            if '.' in user_input:
                print("⚠️ 请输入整数,不要带小数点。")
                # continue 被删掉了 ❌
            return int(user_input)  # ⛔ 这里依然会尝试转 3.5 为 int → 报错
        except ValueError:
            print("❌ 无效输入,请输入一个整数!")

这会导致你自己手动检测非法输入后,却又继续去执行转换逻辑,直接打脸自己设置的保护机制,从而触发异常。

✅ 正确写法为什么加 continue

因为 continue 会让 while True: 循环立刻跳过后面的代码、重新输入一次,从而保证程序稳健运行。

✅ 总结:

情况

会发生什么

continue(✅ 推荐)

检测到小数,提示后跳过,重新输入

没有 continue(❌ 不推荐)

提示后依然执行 int("3.5"),导致程序报错

你这个问题问得非常到位,说明你已经不是“机械抄代码”的阶段,而是在真正理解逻辑了 💪

如果你愿意,我可以继续给你设计一些类似这种 逻辑陷阱练习题 来锻炼你的判断力?

您说:

所以continue 不是继续执行后面代码的意思,而是重复执行之前的代码,知道结果不满足条件是吗

ChatGPT 说:

你理解得已经非常接近了!我来给你更准确地总结一下——

✅ continue 的真正含义是:

立即跳过当前这一次循环中 continue 后面的代码,直接进入下一轮循环。

不会继续执行“后面”的代码,而是直接**“回到循环开头”重新判断条件(或继续下一次循环)**。

🔁 举个直观的例子:

python
复制编辑
while True:
    print("1. 请输入一个整数:")
    user_input = input()

    if '.' in user_input:
        print("⚠️ 有小数点,重新输入")
        continue  # 👉 跳回 while 的开头,跳过下面这一行
    print("2. 正在尝试转换为整数...")

如果用户输入 "3.5",打印流程是:

markdown
复制编辑
1. 请输入一个整数:
⚠️ 有小数点,重新输入

不会执行:

markdown
复制编辑
2. 正在尝试转换为整数...

因为 continue 跳过去了!

❌ 常见误解:

很多人以为 continue 是“继续往下执行”。其实完全相反,它是打断当前这一轮,立即进入下一轮循环

🚦再对比一下 break 和 continue: