ldk4188 发表于 2020-12-29 10:05:01

练习问题

sdate =
conts = ['摩羯座','水瓶座','双鱼座','白羊座','金牛座','双子座','巨蟹座','狮子座','处女座','天秤座','天蝎座','射手座']

birth = input('请输入你的出生年月日,格式为:2001-01-22\n').strip('')
cbir = birth.split('-')
cmonth = str(cbir)
cdate = str(cbir)
def conts(cmonth,cdate):
    if int(cdate) <= sdate:
      print(conts)
    else:
      print(conts)
            
conts(cmonth,cdate)

这是别的书本的一道练习题,想根据出生日期判断星座,不知道为啥出来的是'function' object is not subscriptable

有哪位大佬能帮我看一下为什么吗??谢谢

太阳总会升起 发表于 2020-12-29 10:30:14

函数名跟第二行变量名重复了,改一下函数名就OK了

jackz007 发表于 2020-12-29 13:28:07

本帖最后由 jackz007 于 2020-12-29 15:26 编辑

      标识符冲突
conts = ['摩羯座','水瓶座','双鱼座','白羊座','金牛座','双子座','巨蟹座','狮子座','处女座','天秤座','天蝎座','射手座']
. . . . . .
def conts(cmonth,cdate):
      导致语句
      print(conts)
    else:
      print(conts)
      标识符 conts 被当作函数,所以报错。
      解决方法,只要修改上述两个标识符中的任何一个都可以解决问题。
      此外,楼主代码的 sdate 数组只有 11 个月的数据,缺了 1 个月的

      下面是本人写的代码,谨供楼主参考
sdate =
conts = ['水瓶','双鱼','白羊','金牛','双子','巨蟹','狮子','处女','天秤','天蝎','射手','摩羯']
m , d = map(int , input('请输入你的出生月日(格式为:月 日) : ') . strip() . split())
if d < sdate : m -= 1
if m < 1 : m = 12
print(conts + '座')
页: [1]
查看完整版本: 练习问题