簡體   English   中英

變量保持其價值

[英]Variable keeps its value

我再次需要幫助。 問題是,當我調用應添加到變量的函數時,該變量將保持其原始值。

碼:

import random

def christncombat(x,y,z):
    x += 1
    if x > 26:
        x = 1
        y += 1
    if y > 26:
        y = 1
        z += 1
    if z > 26:
        z = 1
        x = 1
        y = 1

encrypt = {65:90, 66:90, 67:72, 68:78, 69:77, 70:83, 71:87, 72:67, 73:73, 74:89, 75:84,
           76:81, 77:69, 78:68, 79:79, 80:66, 81:76, 82:82, 83:70, 84:75, 85:85, 86:86,
           87:71, 88:88, 89:74, 90:65}
encrypted = []

r1 = random.randint(1,26)
r2 = random.randint(1,26)
r3 = random.randint(1,26)
security = str(r1) + "a" + "-" + str(r2) + "b" + "-" + str(r3) + "c"

input_en = input("Zadejte text, ktery chcete zasifrovat (pouzivejte velka pismena): ")

for i in range(0,len(input_en)):
    coded = input_en[i]
    coded = ord(coded)
    coded = encrypt[coded]
    full = r1 + r2 + r3
    coded += full
    while(coded > 90):
    rekt = coded - 90
    coded = 65 + rekt
    christncombat(r1,r2,r3)
    full1 = r1 + r2 + r3
    coded += full1
    while(coded > 90):
        rekt = coded - 90
        coded = 65 + rekt
    done = chr(coded)
    encrypted.append(done)
print(encrypted)
print("Bezpecnostni kod je",security)

盡管問題可能出在這部分:

def christncombat(x,y,z):
     x += 1
     if x > 26:
         x = 1
         y += 1
     if y > 26:
         y = 1
         z += 1
     if z > 26:
         z = 1
         x = 1
         y = 1

也許您想從函數中返回值? 您可以將值放在列表中並返回列表:

 def christncombat(x,y,z):
      x += 1
      if x > 26:
         x = 1
         y += 1
      if y > 26:
          y = 1
          z += 1
      if z > 26:
          z = 1
          x = 1
          y = 1

      value_list = [x, y, z]
      return value_list

現在,您可以在代碼的主要部分中調用該函數:

new_value_list = christncombat(r1,r2,r3)

現在,在您的new_value_list中,您將r1,r2和r3都更改為希望的值。 現在,您可以訪問所有變量:

new_r1 = new_value_list[0]
new_r2 = new_value_list[1]
new_r3 = new_value_list[2]

您需要從函數返回修改后的值,如下所示:

def christncombat(x,y,z):
    x += 1
    if x > 26:
        x = 1
        y += 1
    if y > 26:
        y = 1
        z += 1
    if z > 26:
        z = 1
        x = 1
        y = 1
    return x, y, z

然后,在調用代碼中,您可以捕獲這些返回的值,如下所示:

r1, r2, r3 = christncombat(r1, r2, r3)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM