以下代码获取用户输入,然后输出用户输入中每个字母的反向英文字母版本。但是,它只适用于任何仅包含字母的字符串,如果用户输入有空格字符(或符号,但符号对于此代码并不重要),它会显示一个 ValueError。 我如何让它也适用于空间?
import string
#Gets every letter in the alphabet:
alphabets = list(string.ascii_lowercase)
#create some list to do something, will be explained later;
res = []
res2 = []
#Gets user input:
getString = str(input()).lower()
#Gets every letter in the input:
get_all_letters = [x for x in getString]
#Create for loop then find the index of every letter in user input in alphabet, append it to the res list:
for x in range(-1,len(get_all_letters)-1):
x+=1
if get_all_letters[x-1] in alphabets:
m = alphabets.index(get_all_letters[x])
res.append(m)
#Reverse the alphabet:
reversed_alphabets = alphabets[::-1]
#Create for loop to append every element in the reversed alphabet by given index in the res list to the res2 list:
for x in res:
res2.append(reversed_alphabets[x])
#Convert the res2 list to string:
n = "".join(res2)
#print it:
print(n)
如果用户在循环外或循环内包含空格,我尝试附加一个空格,它运行但显示意外输出。所以,我决定删除它。这里还有一些输入示例、预期输出和我的输出: 输入:“你好世界” 预期输出:“svool dilow” 我的输出:ValueError: ' ' is not in list.
输入:“猫” 期望输出:“xzg” 我的输出:“wzg”
输入:“cat” 预期输出:“xz g” 我的输出:ValueError: ' ' is not in list.
有办法解决吗?
这里是你的代码修改后可以正常工作,删除了不必要的 -1/+1/-1:
import string
#Gets every letter in the alphabet:
alphabets = string.ascii_lowercase
#create some list to do something, will be explained later;
res = []
res2 = []
#Gets user input:
getString = input().lower()
#Create for loop then find the index of every letter in user input in alphabet, append it to the res list:
for x in range(len(getString)):
if getString[x] in alphabets:
m = alphabets.index(getString[x])
res.append(m)
#Reverse the alphabet:
reversed_alphabets = alphabets[::-1]
#Create for loop to append every element in the reversed alphabet by given index in the res list to the res2 list:
for x in res:
res2.append(reversed_alphabets[x])
#Convert the res2 list to string:
n = "".join(res2)
#print it:
print(n)
Python 粉丝会注意到,任何执行
range(len(x))
的 for 循环几乎总是可以通过迭代 x: 来做得更好
for x in getString:
if x in alphabets:
m = alphabets.index(x)
res.append(m)