首页 > 解决方案 > 从列表循环返回

问题描述

此代码与凯撒密码加密几乎相同。当我只使用convert(x,key)而不使用return时,它才有效,但是当我在函数中使用return,然后我用print(convert(x,key))调用时,它只显示最后一个列表而不是全部。有可能从函数循环中返回吗?

x = int(input())
key = list(input())

def convert(a, b):
  for i in b:
    old = ord(i)
    old += a
    realvote = chr(old)
  return realvote
  print()
  
print(convert(x, key))

输入 :

4
abc

期待:efg

输出:g

标签: python-3.x

解决方案


使用生成器和 yield 语句:

x = int(input())
key = list(input())

def convert(a, b):
  for i in b:
    old = ord(i)
    old += a
    realvote = chr(old)
    yield realvote
  
print(''.join(convert(x, key)))

使用纯字符串:

x = int(input())
key = list(input())

def convert(a, b):
  retval = ""
  for i in b:
    old = ord(i)
    old += a
    retval += chr(old)
  return retval
  
print(convert(x, key))

单线:

convert = lambda a, b: "".join((chr(ord(c) + a) for c in b))

推荐阅读