我如何用IFT语句减去一个数字?

2024-10-04 07:33:40 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的代码:

import sys
import click


def Seats():
    global seats
    seats = 168
    print("\nThe current seating capacity is {}\n".format(seats))


def Restart():
    while True:
        restart = click.confirm('\nWould you like to subtract 1 from seats?',
                                default=True)

        if restart == True:
            x = seats - 1
            Seats()
        elif restart == False:
            print("\nOk, see you next time!\n")
            sys.exit()


Seats()
Restart()

我想问用户“您想从seats中减去1吗?”然后从seats变量中减去1,然后重复,直到用户输入no


Tags: 代码用户importyoutruedefsysglobal
2条回答

要使事情正常运行,您必须在Restart()函数中将seats声明为全局变量,并停止在Seats()函数中重置它。它不必在下面的Seats()函数版本中声明,因为它不再试图设置或更改其值

要从变量中减去一个数字并将结果存储回变量,您需要执行variable = variable - number使用更简洁的variable -= number语句

另外,当您想要终止Restart()中的while循环并让它“结束”和return时,您所需要做的就是break退出while True循环

以下是您的代码和这些更改:

import click


seats = 168  # Initialize global variable.

def Seats():
    print("\nThe current seating capacity is {}\n".format(seats))

def Restart():
    global seats

    while True:
        restart = click.confirm('\nWould you like to subtract 1 from seats?',
                                default=True)

        if restart:
            seats -= 1
            Seats()
        else:
            print("\nOk, see you next time!\n")
            break


Seats()
Restart()

正如评论中指出的,代码中的主要问题如下:

def Seats():
    global seats
    seats = 168
    print("\nThe current seating capacity is {}\n".format(seats))

无论何时何地在代码中调用函数Seats,都会重新定义seats的值,因为seats = 168会被执行

当问题被指出后,我试图编辑您的代码,使其保持相同的结构,以便向您展示如何解决问题,但我改变了主意。尽管代码很小,但它有一个不必要的复杂逻辑和一个非常不干净的语法。你是个初学者,所以没问题!正因为如此,我认为向您展示实现该算法的另一种方法会更有价值。下面是:

import click


seats = 168
while seats > 0:
    subtract_seat = click.confirm('\nWould you like to subtract 1 from seats?', default = True)
    if subtract_seat:
        seats -= 1
        print("\nThe current seating capacity is {}\n".format(seats))
    else:
        break
print("\nOk, see you next time!\n")
  1. 不需要导入sys库。你没有使用它
  2. while seats > 0避免在没有剩余座位时减去座位,同时也是用于与用户交互的主循环
  3. 如果不满足第一个条件,else子句将自动注意
  4. 代码中绝对不需要函数或全局变量。如果在更大的上下文中插入此代码,则可能需要它们,但请记住简单性

#阿什多贝斯特女孩

相关问题 更多 >