如何在python中中断while循环?

如何在python中中断while循环?,python,Python,我正在做一个小计算器。接受两个数字和一个运算符当我使用函数时,这将很容易,但在这里我使用while条件语句,但有一个错误,它不会中断,而每次操作它都会要求用户在“Y”表示是和“N”表示否时再次执行任何操作,但有一个错误它不会更改N的值。以下是我的节目: n = 1 def again(number): print('value of n in again fucntion', n) calc_again = input(''' Do you want to calculate a

我正在做一个小计算器。接受两个数字和一个运算符当我使用函数时,这将很容易,但在这里我使用while条件语句,但有一个错误,它不会中断,而每次操作它都会要求用户在“Y”表示是和“N”表示否时再次执行任何操作,但有一个错误它不会更改N的值。以下是我的节目:

n = 1
def again(number):
    print('value of n in again fucntion', n)
    calc_again = input('''
Do you want to calculate again?
Please type Y for YES or N for NO.
''')

    if calc_again.upper() == 'Y':
        number = 1
        return number
    elif calc_again.upper() == 'N':
        number = 0
        print('value of n after say no', number)
        return number
    else:
        again(n)
while n > 0:
    print('while n value', n)
    operation = input('''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
''')
    number_1 = int(input('Please enter the first number: '))
    number_2 = int(input('Please enter the second number: '))

    if operation == '+':
        print('{} + {} = '.format(number_1, number_2))
        print(number_1 + number_2)
        again(n)

    elif operation == '-':
        print('{} - {} = '.format(number_1, number_2))
        print(number_1 - number_2)
        again(n)

    elif operation == '*':
        print('{} * {} = '.format(number_1, number_2))
        print(number_1 * number_2)
        again(n)

    elif operation == '/':
        print('{} / {} = '.format(number_1, number_2))
        print(number_1 / number_2)
        again(n)

    else:
        print('You have not typed a valid operator, please run the program again.')

谁能帮我解决这个问题。提前感谢。

如果您想中断循环,只需在希望循环停止的位置使用
break

编辑:
您的循环可以是:

while n > 0:
    print('while n value', n)
    operation = input('''
Please type in the math operation you would like to complete:
+ for addition
- for subtraction
* for multiplication
/ for division
''')
    number_1 = int(input('Please enter the first number: '))
    number_2 = int(input('Please enter the second number: '))

    if operation == '+':
        print('{} + {} = '.format(number_1, number_2))
        print(number_1 + number_2)
        if again(n) == 0:break

    elif operation == '-':
        print('{} - {} = '.format(number_1, number_2))
        print(number_1 - number_2)
        if again(n) == 0:break

    elif operation == '*':
        print('{} * {} = '.format(number_1, number_2))
        print(number_1 * number_2)
        if again(n) == 0:break

    elif operation == '/':
        print('{} / {} = '.format(number_1, number_2))
        print(number_1 / number_2)
        if again(n) == 0:break

    else:
        print('You have not typed a valid operator, please run the program again.')

无需存储值
n

  • while
    循环更改为
    while True:

  • 再次更改
    函数以返回布尔值

  • 再次调用
    函数时,请使用以下语法

    if not again():
           break
    
    if not again():
           break
    

  • 无需存储值
    n

  • while
    循环更改为
    while True:

  • 再次更改
    函数以返回布尔值

  • 再次调用
    函数时,请使用以下语法

    if not again():
           break
    
    if not again():
           break
    
  • 最后的代码是这样的

    def again():
        calc_again = input('''
    Do you want to calculate again?
    Please type Y for YES or N for NO.
    ''')
    
        if calc_again.upper() == 'Y':
            return True
        elif calc_again.upper() == 'N':
            return False
        else:
            return again()
    
    while True:
        operation = input('''
    Please type in the math operation you would like to complete:
    + for addition
    - for subtraction
    * for multiplication
    / for division
    ''')
        number_1 = int(input('Please enter the first number: '))
        number_2 = int(input('Please enter the second number: '))
    
        if operation == '+':
            print('{} + {} = '.format(number_1, number_2))
            print(number_1 + number_2)
    
        elif operation == '-':
            print('{} - {} = '.format(number_1, number_2))
            print(number_1 - number_2)
    
        elif operation == '*':
            print('{} * {} = '.format(number_1, number_2))
            print(number_1 * number_2)
    
        elif operation == '/':
            print('{} / {} = '.format(number_1, number_2))
            print(number_1 / number_2)
    
        else:
            print('You have not typed a valid operator, please run the program again.')
            break
    
        if not again():
            break
    

    中再次使用局部变量
    number
    ,但在外部使用
    n
    。您必须将
    的返回值再次分配给
    n

    def again():
        while True:
            calc_again = input('''
    Do you want to calculate again?
    Please type Y for YES or N for NO.
    ''')
            if calc_again.upper() == 'Y':
                number = 1
                return number
            elif calc_again.upper() == 'N':
                number = 0
                print('value of n after say no', number)
                return number
    
    n = 1
    while n > 0:
        print('while n value', n)
        operation = input('''
    Please type in the math operation you would like to complete:
    + for addition
    - for subtraction
    * for multiplication
    / for division
    ''')
        number_1 = int(input('Please enter the first number: '))
        number_2 = int(input('Please enter the second number: '))
    
        if operation == '+':
            print('{} + {} = '.format(number_1, number_2))
            print(number_1 + number_2)
        elif operation == '-':
            print('{} - {} = '.format(number_1, number_2))
            print(number_1 - number_2)
        elif operation == '*':
            print('{} * {} = '.format(number_1, number_2))
            print(number_1 * number_2)
        elif operation == '/':
            print('{} / {} = '.format(number_1, number_2))
            print(number_1 / number_2)
        else:
            print('You have not typed a valid operator, please run the program again.')
        n = again()
    

    您可以按如下方式简化代码,并避免代码中不必要的递归:

    operations = {
        "+": lambda x, y: x + y,
        "-": lambda x, y: x - y,
        "/": lambda x, y: x / y,
        "*": lambda x, y: x * y
    }
    continue_calculation = ""
    while True:
        calc_again = input('''Do you want to calculate again?Please type Y for YES or N for NO.''')
        if calc_again == "n" or calc_again == "N":
            break
        operation = input('''Please type in the math operation you would like to complete:
                                + for addition
                                - for subtraction
                                * for multiplication
                                / for division
                              ''')
        number_1 = int(input('Please enter the first number: '))
        number_2 = int(input('Please enter the second number: '))
        try:
            print(operations[operation](number_1, number_2))
        except:
            print('You have not typed a valid operator, please run the program again.')
    

    你说我必须使用if语句?就像你在C,C++或java中使用的,使用<代码> Bug < /Cord>。一个旁注:一个用于命名函数的经验法则:如果你能用简单的语言来解释它所做的,那么用这些词作为函数名,如果你不能,删除整个函数——它就没有做任何有意义的事情。再次调用
    函数总是一个坏主意。