当用户输入包含空格时,我的代码显示 ValueError??(Python)

问题描述 投票:0回答:1

以下代码获取用户输入,然后输出用户输入中每个字母的反向英文字母版本。但是,它只适用于任何仅包含字母的字符串,如果用户输入有空格字符(或符号,但符号对于此代码并不重要),它会显示一个 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.

有办法解决吗?

python valueerror
1个回答
0
投票

这里是你的代码修改后可以正常工作,删除了不必要的 -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)
© www.soinside.com 2019 - 2024. All rights reserved.