Python【每日一问】21

日期转换与星号绘图

问:

【基础题】输入某年某月某日,判断这一天是这一年的第几天?

【提高题】用 *号输出字母 C的图案 

 

答:

【基础题】输入某年某月某日,判断这一天是这一年的第几天?

方法1:

import time

test_time = input("请输入日期(年-月-日):")
time_struct = time.strptime(test_time, "%Y-%m-%d")
time_year = time_struct.tm_year
time_yday = time_struct.tm_yday
print("{}是{}年这一年中的第{}天".format(test_time, time_year, time_yday))

 

方法2:

import datetime

date_time = input("请输入日期(年-月-日):")
datetime_struct = datetime.datetime.strptime(date_time, "%Y-%m-%d")
time_year = datetime_struct.timetuple().tm_year
time_yday = datetime_struct.timetuple().tm_yday
print("{}是{}年这一年中的第{}天".format(date_time, time_year, time_yday))

 

 方法3:

def get_daynum():
    year = input("请输入年份:")
    month = input("请输入月份:")
    day = input("请输入天:")
    date1 = datetime.date(year=int(year), month=int(month), day=int(day))
    date2 = datetime.date(year=int(year), month=1, day=1)
    return ((date1 - date2).days + 1)


if __name__ == '__main__':
    print(get_daynum())

 

【提高题】用 *号输出字母 C的图案 

方法1:

print("    *****   ")
print("   **    *  ")
print("  **       ")
print("  **       ")
print("   **    *  ")
print("    *****   ")

 

方法2:

ch = [[0, 1, 1, 0],
      [1, 0, 0, 1],
      [1, 0, 0, 0],
      [1, 0, 0, 0],
      [1, 0, 0, 1],
      [0, 1, 1, 0]]

for i in range(len(ch)):
    for j in ch[i]:
        if j == 0:
            print(" ",end="")
        else:
            print("*", end=" ")

    print()

 

输出结果:

 

方法3:

from PIL import Image,ImageDraw,ImageFont
import numpy as np

text = "C"
myfont = ImageFont.truetype("msyh.ttc", 12)  # 在代码所在目录下需要放置字体文件,此处为msyh.tcc
size = myfont.getsize(text)
img = Image.new("1", size, "black")
draw = ImageDraw.Draw(img)
draw.text((0,0), text, "white", font=myfont)
pixels = np.array(img, dtype=np.uint8)
chars = np.array([' ', '*'], dtype="U1")[pixels]
strings = chars.view('U' + str(chars.shape[1])).flatten()
print("\n".join(strings))

 

输出结果:

转载于:https://www.cnblogs.com/ElegantSmile/p/10842793.html

"Python每日学"是个提供每天学习Python知识点的系列文章。这个系列包含多个主题,比如切片、回文字符串、回文素数等。其中,切片是种用于获取列表、字符串、元组等序列对象的子集的方法。切片的语法是s[start:end:step],可以根据需要指定起始位置、结束位置和步长来获取子集。回文字符串是指正着读和反着读都样的字符串。可以使用切片方法将字符串反转,并与原字符串进行比较,如果相同则是回文字符串。回文素数是同时满足回文和素数条件的数,即既是回文数又是素数。可以通过判断个数是否既是回文数又是素数来确定是否为回文素数。"Python每日学"系列中还包含其他主题,比如输出成绩、提取身份号码中的日期与性别等。在输出成绩的例子中,通过判断个数是否既是回文数又是素数来输出小于给定数的回文素数。总之,"Python每日学"是个帮助学习者每天学习Python知识点的系列文章,涵盖了多个主题和实例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Python每日学 07——切片](https://blog.youkuaiyun.com/qq_52417436/article/details/128112888)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值