我需要编写代码,打印出不会出现在两个字符串中的任何一个字母的所有字母。所以基本上我所做的恰恰相反。打印出两个字符串中出现的所有字母。这是代码。我不确定如何更改它。
s1 = input('Enter a string:\n')
s2 = input('Enter second string:\n')
s1 = set(s1)
s2 = set(s2)
def notInother(s1, s2):
chars = []
for char in (s1,s2):
if char not in s2:
if char not in s1:
chars.append(char)
print(chars)
答案 0 :(得分:5)
首先,您可以使用|
合并两个集合,然后执行-
以获取字母表中的所有字母,并删除字符串中的字母:
>>> from string import ascii_letters
>>> set(ascii_letters) - (s1 | s2)
{'e', 'f', 'g', 'h', 'i', 'j', 'k', ...}
您可能需要查看set operations以节省编写循环的麻烦。
使用for循环:
>>> from string import ascii_letters
>>> def notInother(s1, s2):
... chars = []
... for char in ascii_letters:
... if (char not in s1) and (char not in s2):
... chars.append(char)
... return chars
答案 1 :(得分:1)
使用此:
import string
str1 = input('Enter a string:\n').lower()
str2 = input('Enter second string:\n').lower()
print(set(string.ascii_lowercase).difference(set((str1+str2).lower())))
说明:
set(string.ascii_lowercase)
是一组小写字母
set((str1+str2).lower())
给出串联的字符串1& 2
从使用中作为输入。
set1.difference(set2)
给出了一个包含set1但不在set2中的元素的集合。
答案 2 :(得分:0)
在这里,我试着写一个非常简单和基本的答案。
可以在string
模块
from string import ascii_letters as letters
但当然您可以直接在代码中编写
letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
您需要两个字符串,其中包含要排除的字符
s1, s2 = 'abcdef', 'STUVWXYZ'
要解决您的问题,您可以使用列表理解构建包含剩余字母的列表(我认为代码是自解释的)
rl = [c for c in letters if c not in s1+s2]
最后,如果要打印代码的结果,可以使用空字符串的.join()
方法
print(''.join(rl))
给你
ghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQR