python 在函数内使用Return与Print

ilmyapht  于 2023-03-11  发布在  Python
关注(0)|答案(6)|浏览(217)

试图写一个函数,只返回字符串中的大写字母。2如果我在函数中使用print,它会报告所有的大写字母,但会导致双重打印,因为在调用函数时必须使用print。
我如何使用“return”代替print?目前它只返回第一个字母。

def get_capitals(string):
    for i in string:
        try:
            if ord(i) in range(65, 91):
                print (i, end="")  
        except:
              pass
print(get_capitals("CS1301"))
print(get_capitals("Georgia Institute of Technology"))
wydwbb8l

wydwbb8l1#

可以使用yield将函数转换为生成器

def get_capitals(string):
    for i in string:
        if ord(i) in range(65, 91):
            yield i

list(get_capitals('AbCdE')) # -> ['A','C','E']
''.join(get_capitals('AbCdE')) # -> "ACE"
dkqlctbz

dkqlctbz2#

你必须创建一个字符串,而不是直接打印每个captital,并使用end=''。这就像一个流,而你想存储你的数据,并在函数结束时返回它。

def get_capitals(string):
    return_string = ''
    for i in string:
        try:
            if ord(i) in range(65, 91):
                return_string += i
        except:
              pass
    return return_string
0g0grzrc

0g0grzrc3#

你可以创建一个空的字符串变量,并在循环中将大写字母附加到它的后面,然后在循环结束时,你可以返回包含所有大写字母的最终字符串。

def get_capitals(string):
    capital_letters = ""
    for i in string:
        try:
            if ord(i) in range(65, 91):
                capital_letters += i  
        except:
              pass
    return capital_letters
2guxujil

2guxujil4#

创建一个新的字符串变量并将其追加,而不是print。
示例

def get_capitals(string):
  capital_letters = ""
  for i in string:
    try:
      if ord(i) in range(65, 91):
        capital_letters += i  
    except:
      pass
  return capital_letters

print(get_capitals("CS1301"))
print(get_capitals("Georgia Institute of Technology"))

7jmck4yq

7jmck4yq5#

创建一个空列表并添加大写字母,然后使用join将其转换为string return that

def get_capitals(string):
    lis = []
    for i in string:
        try:
            if ord(i) in range(65, 91):
                lis.append(i)
        except:
              pass
     valu = ''.join(lis)
     return valu
print(get_capitals("CS1301"))
print(get_capitals("Georgia Institute of Technology"))
n9vozmp4

n9vozmp46#

Returnprint是完全不同的东西。
Return不“打印”任何东西。你不能用“return”替换“print”语句。
当你的函数到达一个return语句时,它将结束函数。这就是“return”的意思。它返回到调用范围。
你知道你的程序的输出吗?它打印

CSNone
GITNone

在您当前的代码中,您可以说:

get_capitals("CS1301")
print()
get_capitals("Georgia Institute of Technology")

这将导致

CS
GIT

单个print()语句为您提供了一个方便的换行符。打印csGIT的是函数调用,而不是您周围的print语句。您的print语句只打印函数的返回值,并且因为您的函数不返回任何内容,它会在函数调用生成的输出中添加一个None
如果你想在函数中使用return,而不想在函数中使用print(),那么你必须在你使用print()的地方组合函数的返回值,在这些地方组合返回字符串,然后用return语句返回组合后的值。
那么使用'' print(get_capitals(“CS1301”))'''函数的返回值是有意义的,然后用print()定义该返回值。
稍微摆弄一下,你就会明白会发生什么。

相关问题