用python改进我们的3的倍数小游戏

本文探讨了如何改进使用Python实现的3的倍数小游戏,当输入非数字时程序会崩溃的问题。通过介绍isdigit()方法,可以判断输入是否为数字字符串,避免程序错误。提供了一个利用while True和if-break结构的改进方案,确保程序能够处理非法输入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前几天我发了一篇文章,是关于如何用Python如何实现三的小游戏的。但这个代码也是瑕疵的,如果说你填人数的时候填一个不是数字的字符串,那程序就会直接报错并停止。怎么改进呢?

.isdigit()

使用变量名(变量存储字符串).isdigit()可以判断此变量所指向的字符串是否为数。举个例子吧:

a = '3'
print(a.isdigit())
b = 'ytt'
print(b.isdigit())

运行结果:

True
False

注意:判断的必须为字符串而不是整型或浮点型!!!

改进方案

至此,我们已经知道用什么方法改进了,现在就试试吧!

def three_times(number, *, exit=True, quit=False):

    member = []
    for i in range(1, (number + 1)):
        member.append(i)
    print(('-' * 50))
    print("【游戏开始】共{}名游戏成员,请从1开始报数(三的倍数请输入空格)".format(number))
    print('【提示】结束比赛请输入【#】,个人退赛请输入【*】(请裁判员告诉选手允不允许结束与退赛)')
    print(('-' * 50))

    count = 0
    cur = 0

    while (len(member) != 1):
        count += 1
        if (cur >= len(member)):
            cur = 0

        exp = 0

        if (count % 3 == 0):
            exp = ' '
        else:
            exp = str(count)

        input_number = input('{}号请输入:'.format(member[cur]))

        if quit == True:
            if (input_number == '#'):
                print('比赛中途结束')
                return

        if exit == True:
            if (input_number == '*'):
                print("【退出】{}号成员退出比赛,其他人继续".format(member[cur]))
                member.pop(cur)
                continue

        if (input_number != exp):
            print("【淘汰】{}号成员淘汰".format(member[cur]))
            member.pop(cur)
            continue
        cur += 1

    print("\n【游戏结束】{}号获胜\n".format(member[0]))


f = input('人数:')
while True:
    if f.isdigit():
        f = int(f)
        break
    else:
        print('输入有误,请重新输入。')
        f = input('人数:')

input_ex = input('允许选手中途退出吗:')
while (input_ex != '允许' or input_ex != '不允许'):
    if input_ex == '允许':
        ex=True
        break
    elif input_ex == '不允许':
        ex=False
        break
    else:
        input_ex = input('允许选手中途退出吗:')


input_qu=input('允许中途结束吗:')
while (input_qu != '允许' or input_qu != '不允许'):
    if input_qu == '允许':
        qu=True
        break
    elif input_qu == '不允许':
        qu=False
        break
    else:
        input_qu = input('允许中途结束吗:')


three_times(f, exit=ex, quit=qu)

这里通过while True与if-break进行配合,成功地改进了我们的程序!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值