我试图在def之外创建一个变量,将该变量带入def更改它,然后使用修改后的变量

时间:2016-09-15 05:38:44

标签: python function variables

代码有点长,但我还是新手并且学习如何压缩代码。 我试图做的主要是

L1 = c

def code():
    let = d

let = L1
code
L1 = let

print (let)

我有更多的代码涉及,但def code():中实际发生的事情的要点是任何let等于(这将是一封信)将成为下一个字母。如果我为每个字母都这样做,那一切都有效,但这使得代码非常长,因为code()中的内容大约是15行。

程序的要点是编码单词或小短语。因此,如果L1=a,那么def code():会将字母表中的下一个字母也带到它,除非它与key中的一个字母相同。然后它会继续上升一个字母,直到它与key中的字母不一样。除非L1从一开始就等于key中的字母,否则它将保持不变,然后再重复14次。

如果您想看看我的意思,这是我的实际代码。

key = ["r", "a", "b", "b", "i", "t"]

#Enter word to code
print("Welcome to Part 2")
print("Type each letter of your word followed by enter")
print("Type the 15 letters (or less) word to code.")
print("(if word is shorter, leave those spaces blank.)")

#Code Word
L1 = input ("First Letter: ").lower()
L2 = input ("Second Letter: ").lower()
L3 = input ("Third Letter: ").lower()
L4 = input ("Fourth Letter: ").lower()
L5 = input ("Fifth Letter: ").lower()
L6 = input ("Sixth Letter: ").lower()
L7 = input ("Seventh Letter: ").lower()
L8 = input ("Eighth Letter: ").lower()
L9 = input ("Ninth Letter: ").lower()
L10 = input ("Tenth Letter: ").lower()
L11 = input ("Eleventh Letter: ").lower()
L12 = input ("Twelfth Letter: ").lower()
L13 = input ("Thirteenth Letter: ").lower()
L14 = input ("Fourteenth Letter: ").lower()
L15 = input ("Fifteenth Letter: ").lower()

#combining all the letters into one word if you want to see the word before it codes
#code = L1+L2+L3+L4+L5+L6+L7+L8+L9+L10+L11+L12+L13+L14+L15

#Coding the letters

#making blank lines
print()
print()

def code():
    if let in key:
        let = let

    else:
        let = let.translate(bytes.maketrans(b"abcdefghijklmnopqrstuvwxyz",b"bcdefghijklmnopqrstuvwxyza"))

        if let in key:
            let=let.translate(bytes.maketrans(b"abcdefghijklmnopqrstuvwxyz",b"bcdefghijklmnopqrstuvwxyza"))

            if let in key:
                let=let.translate(bytes.maketrans(b"abcdefghijklmnopqrstuvwxyz",b"bcdefghijklmnopqrstuvwxyza"))

                if let in key:
                    let=let.translate(bytes.maketrans(b"abcdefghijklmnopqrstuvwxyz",b"bcdefghijklmnopqrstuvwxyza"))

                    if let in key:
                        let=let.translate(bytes.maketrans(b"abcdefghijklmnopqrstuvwxyz",b"bcdefghijklmnopqrstuvwxyza"))

                        if let in key:
                            let=let.translate(bytes.maketrans(b"abcdefghijklmnopqrstuvwxyz",b"bcdefghijklmnopqrstuvwxyza"))

                            if let in key:
                                let=let.translate(bytes.maketrans(b"abcdefghijklmnopqrstuvwxyz",b"bcdefghijklmnopqrstuvwxyza"))

                            else:
                                let = let

                        else:
                            let = let

                    else:
                        let = let

                else:
                    let = let

            else:
                let = let

        else:
            let = let         


let = L1
code
L1= let

let = L2
code
L2 = let

let = L3
code
L3= let

let = L4 
code
L4= let 

let =  L5 
code
L5= let 

let =  L6 
code
L6= let 

let =  L7 
code
L7= let 

let =  L8 
code
L8= let 

let =  L9 
code
L9= let 

let =  L10 
code
L10= let 

let =  L11 
code
L11= let 

let =  L12 
code
L12= let 

let =  L13 
code
L13= let 

let =  L14 
code
L14= let 

let =  L15 
code
L15= let 

code = L1+L2+L3+L4+L5+L6+L7+L8+L9+L10+L11+L12+L13+L14+L15
print(code)

这就是我的所有代码。现在假设def code():中的{1}}是针对L1-L15编写的,其中let分别为L1-L15。

我有一个不同的版本,但它是为{L-L15写出code()的版本。

如果我没有意义,我很抱歉。我不太清楚如何解释我在说什么。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

这是相当令人困惑的,所以我可能在这里找不到合适的答案,但我会开枪。首先,给你一些笔记。

def code()通常称为函数。听起来你想要将变量传入和传出函数,你可以使用参数。这是一个例子:

def code(number, key):
    if number == key:
        number += 1
    return number

a_key = 5
a_number = 5
a_number = code(a_number, a_key)
print(a_number)

>>> 6

你也可以清理你的功能。那些其他语句似乎什么都不做(只是为自己分配一个变量,所以它不会改变),所以我们可以删除它们。此外,我们可以通过使用另一个函数作为帮助程序来大大提高可读性,如下所示:

...
# just imagine all your other code is up here
def helper_function(letter):
    return letter.translate(bytes.maketrans(b"abcdefghijklmnopqrstuvwxyz",b"bcdefghijklmnopqrstuvwxyza"))

def code(let, key):
    if let in key:
        let = let
    else:
        let = helper_function(let)
        if let in key: 
            let=helper_function(let)
            if let in key:
                let=helper_function(let)
                if let in key:
                    let=helper_function(let)
                    if let in key:
                        let=helper_function(let)
                        if let in key:
                            let=helper_function(let)
                            if let in key:
                                let=helper_function(let)
    return let

let = L1
let = code(let, key)
L1 = let

我对你要做的事情可能是错的,但这里的最后3行你可以改成

L1 = code(L1, key)

因为看起来您暂时只使用let作为占位符。

我希望有所帮助。继续努力!