python中random.randint()出现的使用问题

######用python完成石头剪刀布的程序,打算利用列表的方式完成

问题相关代码

import  random
a=["0","1","2"]
win=[["0","2"],["1","0"],["2","1"]]

print("剪刀石头布 游戏开始啦!")
print("游戏规则:0代表剪刀,1代表石头,2代表布!记住了吗?\n那我们就开始吧!")
b=input("请出拳:")
c=random.randint(0,2) #改为c=random.choice(a)可以正确运行
if b in a:
    print("我出的是:", c)
    if b==c:
        print("平局!再来一次吧!")
    elif [b,c] in win:
        print("恭喜你赢啦")
    else:
        print("哈哈哈哈哈你输啦!再接再厉!")
else:
    print("输入无效!")

运行结果 :不论b与c的取值是多少,只运行

print("哈哈哈哈哈哈你输啦!再接再厉!“)

img

尝试的解决方法 将语句c=random.randint(o,2)改为c=random.choice(a)能正确运行
我想要达到的结果 通过c=random.randint(1,2)正确运行程序

c=random.randint(0,2)
改为
c=str( random.randint(0,2))

a ,win 列表的内容 和b=input("请出拳:") 读取的内容都是字符串
而random.randint(0,2)返回的是数值
数值与字符串比较都是不相等的,要用str() 把 random.randint(0,2)返回的数值转成字符串

你题目的解答代码如下:

import  random
a=["0","1","2"]
win=[["0","2"],["1","0"],["2","1"]]

print("剪刀石头布 游戏开始啦!")
print("游戏规则:0代表剪刀,1代表石头,2代表布!记住了吗?\n那我们就开始吧!")
b=input("请出拳:")
c=str( random.randint(0,2)) #要用str() 把 random.randint(0,2)返回的数值转成字符串
if b in a:
    print("我出的是:", c)
    if b==c:
        print("平局!再来一次吧!")
    elif [b,c] in win:
        print("恭喜你赢啦")
    else:
        print("哈哈哈哈哈你输啦!再接再厉!")
else:
    print("输入无效!")

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img