def sz(birthday): R=[20,19,21,20,21,22,23,23,23,24,23,22] sz=['水瓶座','双鱼座','白羊座','金牛座','双子座','巨蟹座','狮子座','处女座','天秤座','天蝎座','射手座','摩羯座'] b=birthday.split(":") n=int(b[0]) y=int(b[1]) r=int(b[2]) if r>=R[y-1]: return sz[y-1] else: return sz[y-2] birthday=input("请输入您的生日(格式为:2018:10:12)") print("您的星座为{}".format(sz(birthday)))
时间: 2023-06-19 13:08:16 浏览: 141
这是一个 Python 的函数,可以根据输入的生日日期计算出对应的星座并输出。
函数名为 sz,接收一个参数 birthday,表示生日日期,格式为字符串,如:"2018:10:12"。
函数中定义了两个列表,R 表示每个星座的起止日期,sz 表示每个星座的名称。
接下来将输入的生日日期通过 split 函数分割成年、月、日三个部分,并转换为整型。
然后根据输入的月份和日期判断出其对应的星座,并返回对应的星座名称。
最后在主函数中通过 input 函数获取用户输入的生日日期,调用 sz 函数计算星座并输出结果。
需要注意的是,该函数只适用于西方星座,不适用于中国的生肖星座。
相关问题
def offset_mask(): for i in range(len(data)): data[i]["出生日期"] = offset(data[i]["出生日期"]) return data def offset(): offset_days = 30 birthday_str = data[i]["出生日期"] birthday = datetime.strptime(birthday_str, "%Y-%m-%d") # 计算偏移后的日期 offset_birthday = birthday + timedelta(days=offset_days) return offset_birthday def update2(): global data data = offset_mask() show_data()报错offset() takes 0 positional arguments but 1 was given
这个错误是因为在调用 offset 函数时没有传入必要的参数。offset 函数需要一个名为 data 的参数,但是调用时没有传入。你可以在 offset 函数定义时添加一个参数 data,并在调用 offset 函数时传入 data 参数。例如:
```
def offset_mask(data):
for i in range(len(data)):
data[i]["出生日期"] = offset(data[i]["出生日期"])
return data
def offset(birthday_str):
offset_days = 30
birthday = datetime.strptime(birthday_str, "%Y-%m-%d")
# 计算偏移后的日期
offset_birthday = birthday + timedelta(days=offset_days)
return offset_birthday
def update2():
global data
data = offset_mask(data)
show_data()
```
在调用 offset 函数时,需要传入一个生日字符串作为参数,例如:
```
data[i]["出生日期"] = offset(data[i]["出生日期"])
```
改为:
```
data[i]["出生日期"] = offset(data[i]["出生日期"])
```
这样就可以避免这个错误了。
def offset_mask(): for i in range(len(data)): data[i]["出生日期"] =offset_birthday.strftime("%Y-%m-%d") show_data() def offset(): offset_days = 30 birthday_str = date_input.get() # 获取日期输入框的值 birthday = datetime.strptime(birthday_str, "%Y-%m-%d") offset_birthday = birthday + timedelta(days=offset_days) def update2(): global data data = offset_mask() show_data() offset_mask_btn = Button(root, text="偏移脱敏", command=update2) offset_mask_btn.grid(row=2, column=2)报错name 'offset_birthday' is not defined
这个报错是因为在 `offset_mask()` 函数中,`offset_birthday` 变量没有被定义。你需要将 `offset_birthday` 定义为 `offset()` 函数中的局部变量并返回它,在 `offset_mask()` 函数中使用它。修改如下:
```
def offset():
offset_days = 30
birthday_str = date_input.get() # 获取日期输入框的值
birthday = datetime.strptime(birthday_str, "%Y-%m-%d")
offset_birthday = birthday + timedelta(days=offset_days)
return offset_birthday
def offset_mask():
offset_birthday = offset() # 获取偏移后的生日
for i in range(len(data)):
data[i]["出生日期"] = offset_birthday.strftime("%Y-%m-%d")
show_data()
def update2():
global data
offset_mask() # 直接调用偏移脱敏函数
show_data()
offset_mask_btn = Button(root, text="偏移脱敏", command=update2)
offset_mask_btn.grid(row=2, column=2)
```
这样就可以解决这个报错了。
阅读全文