如何使 if 语句中的局部变量在 if-else 阶梯之外可用

问题描述 投票:0回答:0

这是我当前的提示:用户将输入一个 10 位数字。将每对数字相乘并用答案替换每个数字。

因此,例如,如果输入的数字是 1231231231,则输出将是 23623。因此,更大的输入会产生更大的输出。

我当前的问题是,我正在尝试从 if-else 阶梯中检索信息,但抛出一个 UnboundLocalError,指出“局部变量‘first_pair_digit2’在赋值前被引用。”编译器告诉我错误发生在我在 if 语句中为该变量赋值之后。

这是我的完整代码:

    def main():
  
    num = input("Enter your desired number: ")
  
    if len(num) != 10:
    print("Invalid input. Your number must be 10 digits.")
    else:
    first_pair_string = num[:1]
    second_pair_string = num[:3]
    third_pair_string = num[:5]
    fourth_pair_string = num[:7]
    fifth_pair_string = num[:9]
  
    if len(first_pair_string) == 1:
    first_pair_digit1 = eval(first_pair_string[0])
    elif len(first_pair_string) == 2:
    first_pair_digit1 = eval(first_pair_string[0])
    first_pair_digit2 = eval(first_pair_string[1])
    if len(second_pair_string) == 1:
    second_pair_digit1 = eval(second_pair_string[0])
    elif len(first_pair_string) == 2:
    second_pair_digit1 = eval(second_pair_string[0])
    second_pair_digit2 = eval(second_pair_string[1])
    if len(third_pair_string) == 1:
    third_pair_digit1 = eval(third_pair_string[0])
    elif len(third_pair_string) == 2:
    third_pair_digit1 = eval(third_pair_string[0])
    third_pair_digit2 = eval(third_pair_string[1])
    if len(fourth_pair_string) == 1:
    fourth_pair_digit1 = eval(fourth_pair_string[0])
    elif len(fourth_pair_string) == 2:
    fourth_pair_digit1 = eval(fourth_pair_string[0])
    fourth_pair_digit2 = eval(fourth_pair_string[1])
    if len(fifth_pair_string) == 1:
    fifth_pair_digit1 = eval(fifth_pair_string[0])
    elif len(fifth_pair_string) == 2:
    fifth_pair_digit1 = eval(fifth_pair_string[0])
    fifth_pair_digit2 = eval(fifth_pair_string[1])
  
    first_product = first_pair_digit1 * first_pair_digit2
    second_product = second_pair_digit1 * second_pair_digit2
    third_product = third_pair_digit1 * third_pair_digit2
    fourth_product = fourth_pair_digit1 * fourth_pair_digit2
    fifth_product = fifth_pair_digit1 * fifth_pair_digit2
  
    first_product_string = str(first_product)
    second_product_string = str(second_product)
    third_product_string = str(third_product)
    fourth_product_string = str(fourth_product)
    fifth_product_string = str(fifth_product)
  
    result = first_product_string + second_product_string + third_product_string \
    + fourth_product_string + fifth_product_string
  
    print(result)

    if __name__ == '__main__':
    main()

显然我的代码效率很低,但在这种情况下效率不是必需的。如果你相信你可以用更少的步骤编写这个程序,我很想看看它是如何完成的。

起初我尝试在 main 函数的顶部为 if 语句中的每个变量分配一个值 0,认为它们可能会在整个 main 函数中可用。在那之后不起作用,我尝试将每个变量声明为类似的全局思维。不幸的是,我走的是报春花路径,因为我试图访问的变量是本地变量,因此由 if 语句创建,仅在 if 语句中使用。我尝试的最后一件事是创建额外的函数来计算和返回变量,但在创建第一个函数的过程中发现我必须返回两个变量,而这不是我目前知道如何处理的。我是大学新生,所以我的知识不是0,但我也不是专家。

if-statement local-variables
© www.soinside.com 2019 - 2024. All rights reserved.