Win_l这块只会输出zaijiezaili,result==nmbers这块实现不了,如何解决?(语言-python)

img


Win_l这块只会输出zaijiezaili,result==nmbers这块实现不了

  • 这条语句赋值写法不对,您这样子赋值,没有改变前面定义的列表number,您赋值的这个number只是函数的内部变量,前面定义的number仍然是初值[]。这样,您永远不可能让空列表number与有四个值的result相等。所以输出永远的“再接再厉”。

    img

  • 可以改用原址更改列表的extend()方法


numbers.extend(sample(caipiao_list, 4))
  • 代码运行效果截屏图片,四个数字全中机率有些低,我加入了中1~3数字的分支。

    img


  • 复刻您的代码,也一样踩了您的坑😂😂还好,爬了出来。😊

#!/sur/bin/nve python
# coding: utf-8
from random import sample


caipiao_list = list('1234567')
numbers,result = [], []


def last_list():
    numbers.extend(sample(caipiao_list, 4))
    print(f"\nZhongjianhaoma: {numbers}, {len(numbers)}")


def my_list():
    
    while 1:
        if len(result) < 4:
            up_num = input('Input Number(1~7):').strip() # 去除输入前后可能存在的空格。
            result.append(up_num)
        else:
            break
            
    print('\n', result, len(result))


def hit():
    count = 0
    print(numbers)
    
    for i in result:
        print(i in numbers) 
        if i in numbers:
            count += 1

        print(i, count)
    return count


def win_l():
    n = hit()
    
    if numbers == result:
        print('\nWin!')
    elif n:
        print(f'\nscore a hit {n} numbers.')
    else:
        print('\nZaijiezaili.')


if __name__ == '__main__':
    my_list() # 输入四个数字。
    last_list() # 随机选取四个数字。
    win_l() # 胜负评判。

所以,用列表作“全局变量”使,一定记得,要“原址操作”。