如何在不多次调用原始输入的情况下编写递归函数?

时间:2016-02-27 17:15:48

标签: python recursion raw-input

我想以递归方式编写这个来编码带有ord和chr的字符串中的其他字母,但是当我以递归方式编写它时,它再次从用户调用raw_input。我该如何解决?

def rawEncode(input):
    input= raw_input("GIVE ME SUPER SECRET MESSAGE TO ENCODE")
    unencoded="%s" %input [:]
    if "%s" %input =='':
        return ''
    else:
        answer=ord("%s" %input [0])
        return answer

3 个答案:

答案 0 :(得分:0)

最好在不同的地方获取输入和编码字符串。但是,您可以通过添加其他标志来获得所需的递归,该标志禁用输入强制并将返回值修改为进一步连接ords的列表:

def rawEncode(input='', force_input=True):
    if force_input:
        input= raw_input("GIVE ME SUPER SECRET MESSAGE TO ENCODE")
    if "%s" % input == '':
        return ['']
    else:
        answer = ord("%s" %input [0])
        return [answer] + rawEncode(input=input[1:], force_input=False)

print rawEncode()

答案 1 :(得分:0)

您可以简单地说明语句 input= raw_input("GIVE ME SUPER SECRET MESSAGE TO ENCODE")
在函数调用之前。

答案 2 :(得分:0)

非常简单

    Depth.Fe
1    0,14.21
2    3,19.35
3   10,17.22
4   14,15.87
5   23,13.62
6   30,16.31
7   36,14.13
8   48,13.95
9      59,15
10  66,14.23
11  68,16.81
12  81,15.93
13  94,16.02
14  96,17.85
15 102,17.02
16 115,15.87
17 121,19.84
18 130,16.94
19 163,16.72
20  168,19.2
21 205,20.41
22 239,16.88
23 251,18.74
24 283,16.67
25 297,18.56
26 322,18.87
27 335,20.81
28 351,24.52
29 370,25.03
30 408,25.11
31 416,23.28
32 419,22.56
33    425,19
34 429,20.53
35 443,19.08
36 447,22.83
37 465,21.06
38 474,24.96
39 493,19.12
40 502,22.24
41 522,26.88
42 550,21.15
43 558,28.92
44 571,27.96
45 586,25.03
46 596,26.27