【问题标题】:Print won't work in if statement打印在 if 语句中不起作用
【发布时间】:2023-07-20 16:49:01
【问题描述】:

当我运行这个脚本时,它会跳过第 8 行的打印功能。我一生都无法弄清楚为什么。我已经尝试了很多方法来使它正常工作,但我似乎无法在这里找出问题所在。我对 Python 很陌生,如果这是一个非常简单的问题,请见谅。

编辑:哎呀,忘记了实际代码! facepalm在这里:

import webbrowser
import sys
b = webbrowser.get('windows-default')
print('Type start')
line1 = sys.stdin.readline()
start = 'start'
if line1 == start:
    print('What website do you want to open?')
line2 = sys.stdin.readline()
b.open(line2)

【问题讨论】:

  • 您好像忘记包含脚本了...
  • 哈哈一发就明白了。现已修复!
  • 您知道raw_input(或Python 3 中的input)吗?显然你在这里要求用户输入,所以最好使用这些方法而不是sys.stdin.readline

标签: python if-statement printing


【解决方案1】:

当您在标准输入中键入'start' 然后按回车键时,整个字符串包括换行符 最终存储在line1 中。所以实际上,line1 == 'start\n'。在进行比较之前,您需要从字符串末尾删除 \n。一个简单的方法是使用str.rstrip:

if line1.rstrip() == start:
    print('What website do you want to open?')

编辑:

正如 Ashwini Chaudhary 在 cmets 中指出的那样,您实际上应该只使用 raw_input(或 input,如果使用 Python 3.x)而不是 sys.stdin.readline。这将使您的代码更短,并且无需完全去除尾随换行符:

line1 = raw_input('Type start')
start = 'start'
if line1 == start:
    line2 = raw_input('What website do you want to open?')
    b.open(line2)

【讨论】: