You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python代码中input嵌套print导致None出现的问题及解决

为什么你的Python代码会出现None?

嘿,我一眼就瞅出问题所在啦!你代码里的input(print("..."))写法就是导致None出现的元凶。

问题根源

print()函数本身的返回值是**None**,当你把print()放进input()的参数里时,程序会先执行print()输出你写的提示文本,然后把print()返回的None传给input()作为它的提示语——这就导致控制台会额外显示None,让你摸不着头脑。

拿你这段代码举例:

first_question = str(input(print("Who do you bet for? ")))

实际执行流程是这样的:

  1. 先运行print("Who do you bet for? "),在控制台输出这句话
  2. print()执行完后返回None,所以input()的参数变成了None,控制台就会显示None等待你输入
  3. 你输入内容后,input()把输入值返回,转成字符串赋值给first_question

怎么阻止None显示?

超级简单!直接把提示文本作为input()的参数就行,input()本身就支持接收字符串作为提示语,完全不需要额外套一层print()。

修改后的核心代码片段:

# 去掉多余的print(),直接把提示语传给input
first_question = input("Who do you bet for? ").strip()

# 后面的赌注输入也同理修改:
bet = int(input("How much you bet? "))

加个.strip()是为了去掉输入前后的空格,避免用户不小心输入空格导致判断不匹配~

额外的小优化

我还帮你整理了两个让代码更简洁的小技巧:

  • 判断first_question的条件可以简化,用集合配合lower()兼容大小写输入:
    # 不管用户输入Tim、TIM还是tim都能匹配
    if first_question.lower() in {"tim", "tess", "alex", "duck", "dog"}:
    
  • 把重复的赌注验证逻辑封装成函数,避免写一堆重复代码:
    def get_valid_bet(my_money):
        while True:
            try:
                bet = int(input("How much you bet? "))
                if bet < 0:
                    print("The bet can't take negative values! ")
                elif bet > my_money:
                    print("The bet can't be above the money you have! ")
                else:
                    return bet
            except ValueError:
                # 处理用户输入非数字的情况
                print("Please enter a valid number! ")
    
    之后需要获取合法赌注时,直接调用bet = get_valid_bet(my_money)就好,代码更清爽,还能处理异常输入~

内容的提问来源于stack exchange,提问作者LittleBlue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:13:28