linkais 发表于 2021-1-17 21:10:58

求助

#kaisha.py
content = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
content2 = content.lower()
temp_str = input()
try:
    for i in range(100):
      if temp_str in content:
            num = content.find(temp_str)
            answer = content[(num+3)%26]
      elif temp_str in content2:
            num = content2.find(temp_str)
            answer = content2[(num+3)%26]
      elif temp_str == '\n':
            None
      else :
            answer = temp_str
      print('{}'.format(answer),end = '')
except Exception:
    None
这串代码不加try,except打印flower is beautiful为什么会出现
iorzhu lv ehdxwlixoTraceback (most recent call last):
File "C:\Users\water\Desktop\新建文件夹\记忆\homework.py", line 16, in <module>
    if temp_str in content:
IndexError: string index out of range

Twilight6 发表于 2021-1-17 21:16:58



你 for 循环 i 从 0~99 ,当你 temp_str = input() 这里你 input 输入的字母个数小于 100

那么就会导致报错,索引值超出范围 IndexError

还有,建议论坛发代码时候点击 <> 按钮将代码拷贝进去,否则会将你代码中的 [ i] 给吞了

Twilight6 发表于 2021-1-17 21:20:52



还有需要注意的是,input 是无法接收多行字符串的,当多行字符串拷贝到 input 时,只会算入一行

所以你代码中的第二个 elif temp_str[ i ] == '\n' 是多余的

参考代码:

content = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
content2 = content.lower()
temp_str = input()
try:
    for i in range(len(temp_str)):
      if temp_str in content:
            num = content.find(temp_str)
            answer = content[(num+3)%26]
      elif temp_str in content2:
            num = content2.find(temp_str)
            answer = content2[(num+3)%26]
      else:
            answer = temp_str
      print('{}'.format(answer),end = '')
except Exception:
    pass
页: [1]
查看完整版本: 求助