风百默 发表于 2022-3-6 21:51:51

哪位大佬教教我这俩个题目怎么做?想了几个小时了想不明白

isdkz 发表于 2022-3-6 22:29:15

可以放一下链接吗?或者你点开他那里计算某一天是星期几的公式放上来看看

isdkz 发表于 2022-3-7 00:01:16

数字转英文:
# 将 0 ~ 9 的数字转换成英文
def unit_to_word(u):
    words = {
      0: 'zero', 1: 'one', 2: 'two', 3: 'three',
      4: 'four', 5: 'five', 6: 'six', 7: 'seven',
      8: 'eight', 9: 'nine'
    }
    return words

# 将 10 ~ 19,20 ~ 99 的十位部分数字转换成英文
def tens_to_word(t):
    words = {
      10: 'ten', 11: 'eleven', 12: 'twelve',
      13: 'thirteen', 14: 'fourteen', 15: 'fifteen',
      16: 'sixteen', 17: 'seventeen', 18: 'eighteen',
      19: 'nineteen', 20: 'twenty', 30: 'thirty',
      40: 'forty', 50: 'fifty', 60: 'sixty',
      70: 'seventy', 80: 'eighty', 90: 'ninety'
    }
    if 10 <= t < 20 or not t % 10:
      return words
    else:
      a, b = divmod(t, 10)
      return words + ' ' + unit_to_word(b)

# 将 百位数字转换成英文
def hundreds_to_word(h):
    a, b = divmod(h, 100)
    if b < 10:
      return f"{unit_to_word(a)} hundred and {unit_to_word(b)}"
    else:
      return f"{unit_to_word(a)} hundred and {tens_to_word(b)}"

print(hundreds_to_word(729))

输出日历:
def day(y, m, d):
    ans = 0
    month =

    if not isLeapYear(y):
      month = 28

    for i in range(1,y):# 注意计算之前年的天数时要从1开始计算
      if isLeapYear(i):
            ans += 366
            # ans = ans % 7
      else:
            ans += 365
            # ans = ans % 7

    for i in range(m-1):   # 这里因为月份是由数组表示的,从1月加到m-1月在数组中就是从下标0加到下标m-2
      ans +=month
      # ans = ans % 7

    ans += d

    return ans % 7# 最后这里对7取余也可以,如果计算的年数过多可以边加天数,边对7取余,就像注释掉的那些代码一样

def isLeapYear(y):
    if (y % 400 == 0) or (y % 100 != 0 and y % 4 == 0):
      return True
    else:
      return False

def calendar(y, m):
    month =

    if not isLeapYear(y):
      month = 28
    print(f"\t\t\t{y}年{m}月\t\t\t")
    print()
    print('\t'.join(['Su', 'M', 'Tu', 'W', 'Th', 'F', 'Sa']))
    temp = [''] * 7
    d = month
    for i in range(1, d + 1):
      temp = str(i)
      if temp[-1] != '' or i == d:
            print('\t'.join(temp))
            temp = [''] * 7

calendar(2022, 3)

风百默 发表于 2022-3-7 07:58:15

isdkz 发表于 2022-3-7 00:01
数字转英文:





那个转化成英文的输出形式不对?

isdkz 发表于 2022-3-7 08:03:38

风百默 发表于 2022-3-7 07:58
那个转化成英文的输出形式不对?

个位数的跟十位数的是另两个函数,你看一下注释,我有写着注释的,

题目不是要求 转换个位,十位,百位的用不同函数吗

isdkz 发表于 2022-3-7 08:10:50

风百默 发表于 2022-3-7 07:58
那个转化成英文的输出形式不对?

我改一下,可能是我理解错了

isdkz 发表于 2022-3-7 08:18:35

本帖最后由 isdkz 于 2022-3-8 20:39 编辑

风百默 发表于 2022-3-7 07:58
那个转化成英文的输出形式不对?

如果都要用 hundreds_to_word 这个函数转换的话,就改成这样
# 将 0 ~ 9 的数字转换成英文
def unit_to_word(u):
    words = {
      0: 'zero', 1: 'one', 2: 'two', 3: 'three',
      4: 'four', 5: 'five', 6: 'six', 7: 'seven',
      8: 'eight', 9: 'nine'
    }
    return words

# 将 10 ~ 19,20 ~ 99 的十位部分数字转换成英文
def tens_to_word(t):
    words = {
      10: 'ten', 11: 'eleven', 12: 'twelve',
      13: 'thirteen', 14: 'fourteen', 15: 'fifteen',
      16: 'sixteen', 17: 'seventeen', 18: 'eighteen',
      19: 'nineteen', 20: 'twenty', 30: 'thirty',
      40: 'forty', 50: 'fifty', 60: 'sixty',
      70: 'seventy', 80: 'eighty', 90: 'ninety'
    }
    if 10 <= t < 20 or not t % 10:
      return words
    else:
      a, b = divmod(t, 10)
      return words + ' ' + unit_to_word(b)

# 将 百位数字转换成英文
def hundreds_to_word(h):
    if h <10:
      return unit_to_word(h)
    elif 10 <= h < 100:
      return tens_to_word(h)
    elif h % 100 == 0:
      return f"{unit_to_word(h//100)} hundred"
    else:
      a, b = divmod(h, 100)
      if b < 10:
            return f"{unit_to_word(a)} hundred and {unit_to_word(b)}"
      else:
            return f"{unit_to_word(a)} hundred and {tens_to_word(b)}"

print(hundreds_to_word(99))

风百默 发表于 2022-3-8 20:31:33

isdkz 发表于 2022-3-7 08:18
如果都要用 hundreds_to_word 这个函数转换的话,就改成这样

还是有点问题

风百默 发表于 2022-3-8 20:35:02

isdkz 发表于 2022-3-7 08:18
如果都要用 hundreds_to_word 这个函数转换的话,就改成这样

大佬,return f"{}and{}"是什么形式的返回方式

isdkz 发表于 2022-3-8 20:41:21

风百默 发表于 2022-3-8 20:35
大佬,return f"{}and{}"是什么形式的返回方式

f-string的字符串格式化方式,python 格式化字符串的方式你可以看一下这个:

https://mp.weixin.qq.com/s/mpjDJ50T5ZjskKIIZO6_vQ

isdkz 发表于 2022-3-8 20:41:59

风百默 发表于 2022-3-8 20:35
大佬,return f"{}and{}"是什么形式的返回方式

你试一下这个:# 将 0 ~ 9 的数字转换成英文
def unit_to_word(u):
    words = {
      0: 'zero', 1: 'one', 2: 'two', 3: 'three',
      4: 'four', 5: 'five', 6: 'six', 7: 'seven',
      8: 'eight', 9: 'nine'
    }
    return words

# 将 10 ~ 19,20 ~ 99 的十位部分数字转换成英文
def tens_to_word(t):
    words = {
      10: 'ten', 11: 'eleven', 12: 'twelve',
      13: 'thirteen', 14: 'fourteen', 15: 'fifteen',
      16: 'sixteen', 17: 'seventeen', 18: 'eighteen',
      19: 'nineteen', 20: 'twenty', 30: 'thirty',
      40: 'forty', 50: 'fifty', 60: 'sixty',
      70: 'seventy', 80: 'eighty', 90: 'ninety'
    }
    if 10 <= t < 20 or not t % 10:
      return words
    else:
      a, b = divmod(t, 10)
      return words + ' ' + unit_to_word(b)

# 将 百位数字转换成英文
def hundreds_to_word(h):
    if h <10:
      return unit_to_word(h)
    elif 10 <= h < 100:
      return tens_to_word(h)
    elif h % 100 == 0:
      return f"{unit_to_word(h//100)} hundred"
    else:
      a, b = divmod(h, 100)
      if b < 10:
            return f"{unit_to_word(a)} hundred and {unit_to_word(b)}"
      else:
            return f"{unit_to_word(a)} hundred and {tens_to_word(b)}"

print(hundreds_to_word(99))

风百默 发表于 2022-3-8 22:05:40

isdkz 发表于 2022-3-7 00:01
数字转英文:




大佬,这个第八行和16行为什么要用个循环,这是什么意思

isdkz 发表于 2022-3-8 22:09:17

风百默 发表于 2022-3-8 22:05
大佬,这个第八行和16行为什么要用个循环,这是什么意思

为了计算特定日期到公元 1 年 1 月 1日距离多少天
页: [1]
查看完整版本: 哪位大佬教教我这俩个题目怎么做?想了几个小时了想不明白