|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
sdate = [20,19,21,20,21,22,23,23,23,24,23]
conts = ['摩羯座','水瓶座','双鱼座','白羊座','金牛座','双子座','巨蟹座','狮子座','处女座','天秤座','天蝎座','射手座']
birth = input('请输入你的出生年月日,格式为:2001-01-22\n').strip('')
cbir = birth.split('-')
cmonth = str(cbir[1])
cdate = str(cbir[2])
def conts(cmonth,cdate):
if int(cdate) <= sdate[int(cmonth)-1]:
print(conts[int(cmonth)-1])
else:
print(conts[int(cmonth)])
conts(cmonth,cdate)
这是别的书本的一道练习题,想根据出生日期判断星座,不知道为啥出来的是'function' object is not subscriptable
有哪位大佬能帮我看一下为什么吗??谢谢
本帖最后由 jackz007 于 2020-12-29 15:26 编辑
标识符冲突
conts = ['摩羯座','水瓶座','双鱼座','白羊座','金牛座','双子座','巨蟹座','狮子座','处女座','天秤座','天蝎座','射手座']
. . . . . .
def conts(cmonth,cdate):
导致语句
print( conts[int(cmonth)-1])
else:
print( conts[int(cmonth)])
标识符 conts 被当作函数,所以报错。
解决方法,只要修改上述两个标识符中的任何一个都可以解决问题。
此外,楼主代码的 sdate 数组只有 11 个月的数据,缺了 1 个月的
下面是本人写的代码,谨供楼主参考
- sdate = [21 , 20 , 21 , 21 , 22 , 22 , 23 , 24 , 24 , 24 , 23 , 22]
- conts = ['水瓶','双鱼','白羊','金牛','双子','巨蟹','狮子','处女','天秤','天蝎','射手','摩羯']
- m , d = map(int , input('请输入你的出生月日(格式为:月 日) : ') . strip() . split())
- if d < sdate[m - 1] : m -= 1
- if m < 1 : m = 12
- print(conts[m - 1] + '座')
复制代码
|
|