一直出现sequence item 0: expected str instance, int found(请问怎么办呀?)
"""用户购买彩票
要求:共有7个球,红球有6个
红球的数值在(1-33)的范围内且不能重复
蓝球的范围在(1-16)的范围内
(1)打印出你购买的号码
(2)判断是否中奖
"""
import random
#中奖号码
red_ball = random.randint(1,33)
blue_ball = random.randint(1,16)
price_num = []
while (red_ball not in price_num) and (len(price_num) < 7):
price_num.append(red_ball)
price_result = "".join(price_num)
#创建用户号码盒
box_user = []
#用户购买红球
user = int(input("请输入第一个红球的号码: "))
#如果超出范围
while (user > 33) and (user < 1) and (user in box_user) and (len(box_user) < 6):
print("输入的号码不正确")
user = int(input("请重新输入: "))
box_user.append(user)
#用户购买蓝球
user_blue = int(input("请输入最后一个蓝球的号码: "))
box_user.append(user_blue)
#将号码列表转换成用户彩票号码
str_user = "".join(box_user)
print("您的彩票号码是%s"%(str_user))
#判断是否中奖
if str_user == price_result:
print("恭喜你中奖了")
else:
print("很遗憾,你没有中奖") price_num里面的是数字,而join要作用在字符串上。
你可以append的时候就把添加的内容搞成字符串。 要 join() 的序列必须每个元素都是字符串,所以添加的时候要用字符串:
"""
用户购买彩票
要求:共有7个球,红球有6个
红球的数值在(1-33)的范围内且不能重复
蓝球的范围在(1-16)的范围内
(1)打印出你购买的号码
(2)判断是否中奖
"""
import random
# 中奖号码
red_ball = random.randint(1, 33)
blue_ball = random.randint(1, 16)
price_num = []
while (red_ball not in price_num) and (len(price_num) < 7):
price_num.append(str(red_ball))
price_result = "".join(price_num)
# 创建用户号码盒
box_user = []
# 用户购买红球
user = int(input("请输入第一个红球的号码: "))
# 如果超出范围
while (user > 33) and (user < 1) and (user in box_user) and (len(box_user) < 6):
print("输入的号码不正确")
user = int(input("请重新输入: "))
box_user.append(str(user))
# 用户购买蓝球
user_blue = int(input("请输入最后一个蓝球的号码: "))
box_user.append(str(user_blue))
# 将号码列表转换成用户彩票号码
str_user = "".join(box_user)
print("您的彩票号码是%s" % str_user)
# 判断是否中奖
if str_user == price_result:
print("恭喜你中奖了")
else:
print("很遗憾,你没有中奖") 除了你使用整数来join导致错误以外,代码还有些其他的问题,修改了一部分,可以正常跑起来了:
"""
用户购买彩票
要求:共有7个球,红球有6个
红球的数值在(1-33)的范围内且不能重复
蓝球的范围在(1-16)的范围内
(1)打印出你购买的号码
(2)判断是否中奖
"""
import random
#中奖号码
blue_ball = str(random.randint(1,16))
price_num = []
while len(price_num) < 6:
red_ball = str(random.randint(1,33)) #红球要生成6次,所以必须在循环里
if red_ball in price_num:
continue
price_num.append(red_ball)
price_result = " ".join(price_num)+' '+blue_ball
#创建用户号码盒
box_user = []
#用户购买红球
a=1
while len(box_user) < 6: #用户购买也要输入6次红球吧?
user = input("请输入第%d个红球的号码: " % a)
if int(user) > 33 or int(user) < 1 or (user in box_user):
print("输入的号码不正确!")
continue
a+=1
box_user.append(str(user))
#用户购买蓝球
while True:
user_blue = input("请输入最后一个蓝球的号码: ")
if 0<int(user_blue)<17:
break
print("输入的号码不正确!")
box_user.append(user_blue)
#将号码列表转换成用户彩票号码
str_user = " ".join(box_user)
print("您的彩票号码是:%s"%(str_user))
#判断是否中奖
if str_user == price_result:
print("恭喜你中奖了!")
else:
print("很遗憾,你没有中奖!") txxcat 发表于 2020-4-18 17:26
除了你使用整数来join导致错误以外,代码还有些其他的问题,修改了一部分,可以正常跑起来了:
谢谢老哥 zltzlt 发表于 2020-4-18 17:21
要 join() 的序列必须每个元素都是字符串,所以添加的时候要用字符串:
谢谢老哥 qiuyouzhi 发表于 2020-4-18 15:50
price_num里面的是数字,而join要作用在字符串上。
你可以append的时候就把添加的内容搞成字符串。
谢谢老哥 dengyk 发表于 2020-4-18 19:45
谢谢老哥
如果你的问题已解决,请设置【最佳答案】。 6
页:
[1]