2014-04-08 37 views
-1

我需要将至少有一个大写字母的单词与小写分开。我需要输入并分开大写字母和小写字母并将它们打印出来。这里是我的代码:如何区分在Python中有大写和小写的单词?

text = input("Input your text: ") 
words0 = text.strip().split() 
words1 = [] 
words2 = [] 
wordslen= len(words0) 
for word in words0: 
    counter = 0 
    for x in word: 
     while counter != wordslen: 
      if x.isupper(): 
       words1.append(word) 
      else: 
       words2.append(word) 
      counter += 1 
wordsupper = list(set(words1)) 
wordslower = list(set(words2)) 
allwords = wordsupper + wordslower 

for word in allwords: 
    print(word) 
+2

什么是你的问题? – Ffisegydd

+1

你能给出样本输入和样本输出吗? – rickcnagy

+0

就像输入是“Python和Perl都是编程语言”那样,代码应该分开“Python”和“Perl”,并将其放在wordupper列表中,并放在wordlower列表中。如果它是“pYthon”,它仍然需要把它放在wordupper列表中。 – suyesh

回答

1
words = input("Input your text: ").strip().split() 

lower, mixed = set(), set() 
for word in words: 
    if word == word.lower(): 
     lower.add(word) 
    else: 
     mixed.add(word) 

print("Lowercase words: " + ", ".join(lower)) 
print("Mixed- and uppercase words: " + ", ".join(mixed)) 

它运行,如:

Input your text: This is a Perl and Python party. 
Lowercase words: a, and, is, party. 
Mixed- and uppercase words: This, Python, Perl 
+0

非常感谢大家。你们是伟大的 – suyesh

0

也许是这样的:

text = input("Input your text: ") 
words = text.strip().split() 
wordslower = [] 
wordsupper = [] 

for word in words: 
    # if the word is the same as word.lower() that means all the 
    # characters are lower case. Also, don't add duplicates to 
    # the list. 
    if word == word.lower(): 
     if word not in wordslower: 
      wordslower.append(word) 
    else: # The word has at least one capital letter 
     if word not in wordsupper: 
      wordsupper.append(word) 

print(wordslower) 
print(wordsupper) 
+0

而不是做每个词的会员资格检查,为什么不使用一套?在这种情况下,似乎并不像命令那么重要,所以只要执行'wordslower = set(); wordsupper = set()'并用'set.add'代替'list.append' –

+0

当然,你可以这样做 – jgritty

1

这是类似于以前的帖子,但使用map()代替for word in words:

text = raw_input("Input your text: ") 
words = text.strip().split() 

upper = [] 
lower = [] 
def sort_word(word): 
    if word.lower() == word: 
     lower.append(word) 
    else: 
     upper.append(word) 

map(sort_word, words) 
+0

......你意识到你正在把小写字母放在'upper'和混合和大写'lower'中的单词,对吗? –

+0

哎呀!谢谢 :) – rickcnagy

1

要只具有小写字符的其余部分分开的话:

text = raw_input('Input text: ') 

lower, rest = set(), set() 
for word in text.split(): 
    (lower if word == word.lower() else rest).add(word) 
print(lower) 
print(rest) 
0

试试这个:

def check(word): 
    for k in word: 
     if k != k.lower(): #If the letter is capitalized 
      return True 
    return False 

text = input('Text: ') 
text = text.strip().split() 

wordsupper = [] 
wordslower = [] 

for k in text: 
    if check(k) == True: 
     wordsupper.append(k) 
    else: 
     wordslower.append(k) 

print(wordslower) 
print(wordsupper)