那位python大神告诉我这个程序错哪了?

2025-03-24 07:33:11
推荐回答(2个)
回答1:

没有缩进的看着费劲

import random

key = ''
history = []


def check(num):  # 检测用户输入是否合法
    if num.isdigit() and len(num) == 4 and len(set(num)) == 4:
        return True
    else:
        return False


def randomnum():  # 随机生成4个不同数字的四位数
    while True:
        digitstr = str(random.randint(1000, 10000))
        if len(set(digitstr)) == 4:
            break
    return digitstr


def compare(anum, bnum):
    A, B = 0, 0
    for i in bnum:
        if i in anum:
            for j in anum:
                if i == j and bnum.index(i) == anum.index(j):
                    A += 1
                elif i == j:
                    B += 1
    return str(A) + 'A' + str(B) + 'B'


anum = randomnum()

while key != 'Q':
    key = input('\n请输入不重复的四个数字, Q - 退出游戏:')
    if check(key):
        history.append('{0}-->{1}'.format(key, compare(anum, key)))
        print('\nHISTORY:')
        for i, v in enumerate(history):
            print('{0:>2}.  {1}'.format(i + 1, v))
        if key == anum:
            print('\n恭喜你猜对了。')
            break

回答2:

你的else部分是定义的一个函数,肯定不会执行啊。。。要单独运行函数部分才行还有你定义的a是数组,你input的又是字符串,这个怎么猜