【问题标题】:Why does my code work in python shell but not when I double click the py file为什么我的代码在 python shell 中可以工作,但当我双击 py 文件时却不行
【发布时间】:2011-04-21 05:33:16
【问题描述】:

为什么我的 python 文件在 IDLE 中可以完美运行,但我双击它却无法运行。让我换个说法,我的 if/else 语句似乎从来都不是真的,即使它们在 IDLE 中正常工作。

我什至将我所有的代码分解为最简单的 if/else 语句来测试并确保我没有遗漏任何东西。这是我分解的代码。这是 py 文件中的确切代码,它再次在 IDLE 中工作,但当我双击 py 文件时不能工作

choice = input('letter: ')
if choice == 'a':
    print ('that is an a')
    input('press any key to exit...')
else:
    print('that letter is not an a')
    input('press any key to exit')

顺便说一句python v3.2 窗户 7

【问题讨论】:

  • 有什么问题?你得到堆栈跟踪或奇怪的行为吗?
  • 双击打开的程序是什么?是python 3.2命令行吗?
  • 无痕迹,它只是默认为我的 else 语句
  • 当您添加更多打印语句时,您学到了什么?
  • 其实这不是我真正的程序,我真正的程序是一个使用类和函数的完整界面,但我的选择屏幕无法正常工作,所以我不得不将其深入研究并发现这是我的 if/else 语句不起作用..总之我学会了添加 .strip() 直到我了解更多关于如何以更简单的方式防止这种情况

标签: python


【解决方案1】:

尝试添加

choice = choice.strip()

这对我有用

choice = input('letter: ')
choice = choice.strip()
if choice == 'a':
    print ('that is an a')
    input('press any key to exit...')
else:
    print('that letter is not an a')
    input('press any key to exit')

否则您的input 会为您提供带有换行符的字母,而if 会失败

【讨论】:

  • 确实奏效了,你能不能给我一个发生这种情况的原因,以便我知道以供将来参考!
  • 因为当您在 shell 中写入时,'a'+'enter' 输入会同时获得击键并返回 'a\n'。
【解决方案2】:

input() 可能会得到一个以行结尾的字符串。

尝试在输入后立即添加行 print(repr(choice)),以准确查看您正在处理的内容。

【讨论】:

  • 我没有去检查这个,因为上面的建议你似乎有效......但是非常感谢你所有的快速响应,我在 3 分钟前才注册,因为我找不到帮助在这个任何地方......现在这是我的官方 python 大厅!
  • 如果 strip() 修复了它,我是正确的,你得到了一个行尾。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-12
  • 2019-12-26
  • 1970-01-01
  • 1970-01-01
  • 2018-03-15
  • 1970-01-01
相关资源
最近更新 更多