为了账号安全,请及时绑定邮箱和手机立即绑定

在二十一点“命中或停留”功能中分配变量问题。循环不正确?

在二十一点“命中或停留”功能中分配变量问题。循环不正确?

肥皂起泡泡 2022-12-14 10:52:36
我是编程新手。我正在尝试在一个简单的二十一点游戏中创建一个“命中或停留”功能,在 try/except/else 语句中接受用户输入,该语句也嵌套在 while 循环检查中以确保用户输入是“h”或's'。问题是变量永远不会分配给用户输入。这是我所拥有的:def hit_or_stay(deck,hand):    global playing    x = '' # just holds input for hit/stay    while x !='h' and x !='s':        try:            x = input('HIT or STAY? (h/s): ').lower        except:            print("Please enter h to hit or s to stay." )        else:            break    if x == 'h':        print("You have chosen to hit.")        hit(deck,hand)    elif x == 's':        print("You have chosen to stay.")        playing = False    else:        print(f"x equals {x}")该程序总是只在末尾返回“else”语句,所以我知道 x 没有正确接受用户输入。我究竟做错了什么?
查看完整描述

1 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

lower是一个你需要像这样调用的函数。您也不需要else在 while 循环中。


def hit_or_stay(deck,hand):

    global playing

    x = '' # just holds input for hit/stay


    while x !='h' and x !='s':

        try:

            x = input('HIT or STAY? (h/s): ').lower()

        except:

            print("Please enter h to hit or s to stay." )

    if x == 'h':

        print("You have chosen to hit.")

        hit(deck,hand)

    elif x == 's':

        print("You have chosen to stay.")

        playing = False

    else:

        print(f"x equals {x}")

我不确定将try-except块放在 while 循环中会产生什么行为。这行代码可能抛出的唯一异常是用户试图通过按 Ctrl+C 退出程序。您的代码会捕捉到这一点并继续告诉用户输入 h 或 s。这通常不是好的行为——最好不要包含 try-except。


def hit_or_stay(deck,hand):

    global playing

    x = '' # just holds input for hit/stay


    while x !='h' and x !='s':

        x = input('HIT or STAY? (h/s): ').lower()

    if x == 'h':

        print("You have chosen to hit.")

        hit(deck,hand)

    elif x == 's':

        print("You have chosen to stay.")

        playing = False

    else:

        print(f"x equals {x}")


查看完整回答
反对 回复 2022-12-14
  • 1 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信