Python3中如何将猜数字游戏的用户输入列表转为整数列表
解决Cows and Bulls游戏中用户输入列表转整数列表的问题
嘿,我懂你遇到的这个小麻烦!确实,当你从input()获取用户输入时,得到的都是字符串类型,和你生成的整数列表numtoguess没法直接对比元素。不过解决方法很简单,有几种常用的方式可以快速把字符串列表转成整数列表:
方法1:列表推导式(最直观常用)
如果你的用户输入是通过类似input().split()得到的字符串列表,直接用列表推导式遍历每个元素并转换为整数就行:
import random numtoguess = [random.randrange(0,10,1) for _ in range(4)] print(numtoguess) # 获取用户输入并转换为整数列表 user_input_str = input("请输入4个0-9的数字,用空格分隔:").split() userinput = [int(num) for num in user_input_str] # 现在可以正常对比两个列表的元素啦
方法2:使用map()函数(更简洁)
map()函数可以把转换函数应用到列表的每个元素上,再转成列表,写法更紧凑:
user_input_str = input("请输入4个0-9的数字,用空格分隔:").split() userinput = list(map(int, user_input_str))
额外建议:添加输入验证
为了避免用户输入非数字、数量不对或者超出范围导致程序崩溃,最好加个简单的输入验证逻辑,比如用try-except捕获异常:
import random numtoguess = [random.randrange(0,10,1) for _ in range(4)] print(numtoguess) userinput = [] while True: try: user_input_str = input("请输入4个0-9的数字,用空格分隔:").split() # 检查输入数量是否为4 if len(user_input_str) != 4: print("请输入正好4个数字哦!") continue # 转换为整数列表 userinput = [int(num) for num in user_input_str] # 检查每个数字是否在0-9范围内 if any(num < 0 or num > 9 for num in userinput): print("每个数字都得是0到9之间的哦!") continue break except ValueError: print("请输入有效的数字,不要输其他字符哦!") # 现在可以放心进行Cows and Bulls的逻辑判断啦
这样处理后,你的用户输入列表就和目标列表类型完全一致,能正常进行元素比较了。
内容的提问来源于stack exchange,提问作者Mher Harutyunyan
相关产品推荐
相关产品推荐

