首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中布尔值不会改变

在Python中布尔值不会改变
EN

Stack Overflow用户
提问于 2014-04-29 17:33:54
回答 1查看 143关注 0票数 0

我正在尝试用Python创建一个程序,要求用户输入一个字符串(最好是小写的),然后将该字符串转换为句子大小写。但是,我用来检查下一个字母是否需要大写的布尔值不会被设置为False,尽管满足'if‘语句所需的条件。

代码语言:javascript
复制
    class SentenceCaseProgram(object):
        def __init__(self, isPunctuation, isSpace, sentence, new_sentence):
            self.isPunctuation = isPunctuation
            self.sentence = sentence
            self.new_sentence = new_sentence
            self.isSpace = isSpace
            self.count = 0
        def Input(self):
            self.sentence = str(input("Type in a sentence (with punctuation) entirely in lowercase. "))
        def SentenceCase(self):
            for letter in self.sentence:
                print(self.isPunctuation)
                if self.count == 0:
                    letter = letter.capitalize()
                if letter is ' ':
                    self.isSpace = True
                if (self.isPunctuation == True) and (letter in 'abcdefghijklmnopqrstuvwxyz'):
                    letter = letter.capitalize()
                    self.isPunctuation = letter is '.' or '!' or '?' or ')'
                if letter is 'i' and self.isSpace is True:
                    letter = letter.capitalize()
                    self.isSpace = False
                self.count += 1
                if letter == '.' or '!' or '?' or ')':
                    self.isPunctuation = True
                else:
                    self.isPunctuation = False
                self.new_sentence += letter
        def Print(self):
            print("Your sentence in sentence case is '%s'" % self.new_sentence)
        def Main(self):
            self.__init__(False, False, "", "")
            self.Input()
            self.SentenceCase()
            self.Print()
    app = SentenceCaseProgram(False, False, "", "")
    app.Main()

当我运行程序时,程序要求输入,然后将句子中的每个字母大写,除了第一个循环之外,self.isPunctuation布尔值将始终设置为True。

EN

回答 1

Stack Overflow用户

发布于 2014-04-29 17:42:11

请使用==,而不要使用is来比较字符串

letter is '.' or '!' or '?' or ')'应该是

代码语言:javascript
复制
letter == '.' or letter == '!' or letter == '?' or letter == ')'

代码语言:javascript
复制
letter in '.!?)'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23360857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档