鱼C论坛

 找回密码
 立即注册
查看: 2133|回复: 2

[已解决]练习问题

[复制链接]
发表于 2020-12-29 10:05:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

有哪位大佬能帮我看一下为什么吗??谢谢
最佳答案
2020-12-29 13:28:07
本帖最后由 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 个月的

        下面是本人写的代码,谨供楼主参考
  1. sdate = [21 , 20 , 21 , 21 , 22 , 22 , 23 , 24 , 24 , 24 , 23 , 22]
  2. conts = ['水瓶','双鱼','白羊','金牛','双子','巨蟹','狮子','处女','天秤','天蝎','射手','摩羯']
  3. m , d = map(int , input('请输入你的出生月日(格式为:月 日) : ') . strip() . split())
  4. if d < sdate[m - 1] : m -= 1
  5. if m < 1 : m = 12
  6. print(conts[m - 1] + '座')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-29 10:30:14 | 显示全部楼层
函数名跟第二行变量名重复了,改一下函数名就OK了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-29 13:28:07 | 显示全部楼层    本楼为最佳答案   
本帖最后由 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 个月的

        下面是本人写的代码,谨供楼主参考
  1. sdate = [21 , 20 , 21 , 21 , 22 , 22 , 23 , 24 , 24 , 24 , 23 , 22]
  2. conts = ['水瓶','双鱼','白羊','金牛','双子','巨蟹','狮子','处女','天秤','天蝎','射手','摩羯']
  3. m , d = map(int , input('请输入你的出生月日(格式为:月 日) : ') . strip() . split())
  4. if d < sdate[m - 1] : m -= 1
  5. if m < 1 : m = 12
  6. print(conts[m - 1] + '座')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-26 18:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表