这是我当前的提示:用户将输入一个 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,但我也不是专家。