需要帮助从字符串中的给定位置获取字符…(Python/PyQt)

2024-09-30 04:38:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个基本的python/PyQt程序,它要求用户输入文本。然后,程序将检查文本在输入的结尾或结尾是否有“空格”键。但是,当运行程序时,(即使输入不带空格的字符串),它也会连续返回警告消息框

代码如下:

answer = page.answer.text()
        # validate submitted answer...
        answerlength = (len(answer))-1
        if answer[0] or answer[answerlength] == '':
            QtGui.QMessageBox.warning(
                self, 'Error', 'Please remove the space/s before (or after) your answer!')

注意:这是一段编写的程序,不是完整的程序


Tags: or字符串代码text用户answer文本程序
3条回答

您错误地解释了python中的or运算符。请参阅以下代码:

answer = page.answer.text()
    # validate submitted answer...
    answerlength = (len(answer))-1
    if answer[0] == ' ' or answer[answerlength] == ' ':
        QtGui.QMessageBox.warning(
            self, 'Error', 'Please remove the space/s before (or after) your answer!')

事实上,代码的计算结果为Trueat if answer[0],除非该位置为空,如果有任何字符(包括空格),则该位置不为空。由于or的性质,其余的将永远不会得到评估

您还可以使用负切片表示法从末尾对字符串进行切片:

if answer[0] == " " or answer[-1] == " ":

或者使用^{}^{}

if answer.startswith(" ") or answer.endswith(" ")

下面是一个示例,它检查结束和开始都不包含任何空格字符,使用^{},注意您可以将tuples传递给str.startswith()str.endswith()

import string
answer = page.answer.text():
    ws = tuple(string.whitespace)
    if answer.startswith(ws) or answer.endswith(ws):
        QtGui.QMessageBox.warning(
            self, 'Error', 'Please remove the space/s before (or after) your answer!')

问题是if answer[0] or answer[answerlength] == ''将始终计算为True,因为如果answer[0]包含任何字符,它将被视为True

您应该这样做:

if answer[0] == ' ' or answer[answerlength] == ' ':

我不知道python是如何工作的,但我认为您的if语句无效,您应该这样使用它:

if answer[0] == '' or answer[answerlength] == '':

相关问题 更多 >

    热门问题