鱼C论坛

 找回密码
 立即注册
查看: 1632|回复: 9

[已解决]第五课:闲聊数据类型!闰年课后答案看不懂

[复制链接]
发表于 2024-12-8 20:45:17 | 显示全部楼层 |阅读模式

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

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

x
temp = input("请输入一个年份:")
while not temp.isdigit():
    temp = input("输入不合法,请输入一个整数:")
year = int(temp)
if year == 0:
    print("%d 不是一个闰年!"%year)
else:
    if year%400 == 0:
        print("%d 是一个闰年!"%year)
    else:
        if year%4 == 0 and year%100 != 0:
            print("%d 是一个闰年!"%year)
        else:
            print("%d 不是一个闰年!"%year)
这个是小甲鱼给的闰年课后答案
我看不懂的部分位于   %d   和   %year   这什么意思
我用python打印出来的也没有这个东西的
请懂的老师讲解一下呗
最佳答案
2024-12-8 22:40:17
本帖最后由 jackz007 于 2024-12-9 00:48 编辑

print("%d 不是一个闰年!" % year)
        这一句中 print() 函数括号中的内容包括三个部分,第一部分是引号内的部分,除了格式描述符、特殊转义字符外,字符串的其它内容都需要原样打印输出的,%d 是本句中唯一的格式描述符,表示有一个十进制整形数变量(或者常量)需要显示在这个位置;第二部分是连接符 %,其作用是连接格式描述符和变量;第三部分是变量(或者常量)表,位于 % 之后,按照格式描述符的先后顺序,逐一给出对应的变量(或常量),在本句中,只有一个变量 year, 就是说,前面格式描述符 %d 要显示的对象,是后面的变量 year,需要指出的是,如果变量(常量)的数量超过 1 个,那么,就需要用括号把变量括起来。
        通过下面的代码还可以看到,格式描述符并非属于 print() 函数,而是属于字符串操作。
  1. year , month , day = 2024 , 12 , 8
  2. s = '今天是%4d年%02d月%02d日' % (year , month , day)
  3. print(s)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-12-8 20:45:29 | 显示全部楼层
在 Python 中,`%d` 和 `%year` 是用于字符串格式化的旧式语法。这个方法可以将变量的值插入到字符串中。

- `%d` 是占位符,用于表示一个整数(`d` 代表 decimal)。
- `%year` 表示格式化字符串中的占位符 `%d`,它将被变量 `year` 的值替换。

举个例子:

  1. year = 2024
  2. print("%d 是一个闰年!" % year)
复制代码


在这里,`%d` 会被 `year` 的值替换,所以输出将是 `2024 是一个闰年!`。

这种字符串格式化方法在较早的 Python 版本中很常用,但在现代 Python 程序中,更多使用 `.format()` 方法或 f-strings(Python 3.6+)来进行字符串格式化,例如:
- `print("{} 是一个闰年!".format(year))`
- `print(f"{year} 是一个闰年!")`

希望这个解释能帮您理解!如果还有其他问题,请随时问哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2024-12-8 22:40:17 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2024-12-9 00:48 编辑

print("%d 不是一个闰年!" % year)
        这一句中 print() 函数括号中的内容包括三个部分,第一部分是引号内的部分,除了格式描述符、特殊转义字符外,字符串的其它内容都需要原样打印输出的,%d 是本句中唯一的格式描述符,表示有一个十进制整形数变量(或者常量)需要显示在这个位置;第二部分是连接符 %,其作用是连接格式描述符和变量;第三部分是变量(或者常量)表,位于 % 之后,按照格式描述符的先后顺序,逐一给出对应的变量(或常量),在本句中,只有一个变量 year, 就是说,前面格式描述符 %d 要显示的对象,是后面的变量 year,需要指出的是,如果变量(常量)的数量超过 1 个,那么,就需要用括号把变量括起来。
        通过下面的代码还可以看到,格式描述符并非属于 print() 函数,而是属于字符串操作。
  1. year , month , day = 2024 , 12 , 8
  2. s = '今天是%4d年%02d月%02d日' % (year , month , day)
  3. print(s)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-9 09:12:49 | 显示全部楼层
jackz007 发表于 2024-12-8 22:40
print("%d 不是一个闰年!" % year)
        这一句中 print() 函数括号中的内容包括三个部分,第一部分是 ...

好的,哥我看懂了谢谢哥
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-9 09:12:58 | 显示全部楼层
FishC 发表于 2024-12-8 20:45
在 Python 中,`%d` 和 `%year` 是用于字符串格式化的旧式语法。这个方法可以将变量的值插入到字符串中。
...

好的,哥我看懂了谢谢哥
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-9 09:30:31 | 显示全部楼层
qasa 发表于 2024-12-09 09:12
好的,哥我看懂了谢谢哥


不客气!很高兴能帮到你!如果还有其他关于编程的问题,随时可以问我。学习编程的时候多练习、多实践,会让你的理解更加深刻。加油!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层
urllib.request.urlopen(url, data=None, [timeout, ]*, context=None)
Open url, which can be either a string containing a valid, properly encoded URL, or a Request object.

data must be an object specifying additional data to be sent to the server, or None if no such data is needed. See Request for details.

urllib.request module uses HTTP/1.1 and includes Connection:close header in its HTTP requests.

The optional timeout parameter specifies a timeout in seconds for blocking operations like the connection attempt (if not specified, the global default timeout setting will be used). This actually only works for HTTP, HTTPS and FTP connections.

If context is specified, it must be a ssl.SSLContext instance describing the various SSL options. See HTTPSConnection for more details.

This function always returns an object which can work as a context manager and has the properties url, headers, and status. See urllib.response.addinfourl for more detail on these properties.

For HTTP and HTTPS URLs, this function returns a http.client.HTTPResponse object slightly modified. In addition to the three new methods above, the msg attribute contains the same information as the reason attribute — the reason phrase returned by server — instead of the response headers as it is specified in the documentation for HTTPResponse.

For FTP, file, and data URLs, this function returns a urllib.response.addinfourl object.

Raises URLError on protocol errors.

Note that None may be returned if no handler handles the request (though the default installed global OpenerDirector uses UnknownHandler to ensure this never happens).

In addition, if proxy settings are detected (for example, when a *_proxy environment variable like http_proxy is set), ProxyHandler is default installed and makes sure the requests are handled through the proxy.

The legacy urllib.urlopen function from Python 2.6 and earlier has been discontinued; urllib.request.urlopen() corresponds to the old urllib2.urlopen. Proxy handling, which was done by passing a dictionary parameter to urllib.urlopen, can be obtained by using ProxyHandler objects.

The default opener raises an auditing event urllib.Request with arguments fullurl, data, headers, method taken from the request object.

Changed in version 3.2: cafile and capath were added.

HTTPS virtual hosts are now supported if possible (that is, if ssl.HAS_SNI is true).

data can be an iterable object.

Changed in version 3.3: cadefault was added.

Changed in version 3.4.3: context was added.

Changed in version 3.10: HTTPS connection now send an ALPN extension with protocol indicator http/1.1 when no context is given. Custom context should set ALPN protocols with set_alpn_protocols().

Changed in version 3.13: Remove cafile, capath and cadefault parameters: use the context parameter instead.
请fishc翻译
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
qasa 发表于 2026-03-19 10:12
urllib.request.urlopen(url, data=None, *, context= ...

urllib.request.urlopen(url, data=None, *, context=None)

打开一个URL,该URL可以是一个包含有效且正确编码的URL的字符串,也可以是一个Request对象。

data必须是一个指定要发送到服务器的附加数据的对象,如果不需要此类数据,则为None。有关详细信息,请参阅Request。

urllib.request模块使用HTTP/1.1,并在其HTTP请求中包含Connection:close头部。

可选的timeout参数指定了阻塞操作(如连接尝试)的超时时间(以秒为单位)(如果未指定,将使用全局默认超时设置)。实际上,这仅适用于HTTP、HTTPS和FTP连接。

如果指定了context,则它必须是一个描述各种SSL选项的ssl.SSLContext实例。有关更多详细信息,请参阅HTTPSConnection。

此函数始终返回一个可作为上下文管理器工作的对象,并具有url、headers和status属性。有关这些属性的更多详细信息,请参阅urllib.response.addinfourl。

对于HTTP和HTTPS URL,此函数返回一个经过略微修改的http.client.HTTPResponse对象。除了上述三个新方法外,msg属性包含与reason属性相同的信息——服务器返回的原因短语——而不是HTTPResponse文档中指定的响应头。

对于FTP、文件和数据URL,此函数返回一个urllib.response.addinfourl对象。

协议错误时引发URLError。

请注意,如果没有处理程序处理请求,可能会返回None(尽管默认安装的全局OpenerDirector使用UnknownHandler来确保这种情况永远不会发生)。

此外,如果检测到代理设置(例如,当设置了像http_proxy这样的*_proxy环境变量时),默认安装ProxyHandler并确保请求通过代理处理。

来自Python 2.6及更早版本的旧式urllib.urlopen函数已被弃用;urllib.request.urlopen()对应于旧的urllib2.urlopen。通过传递字典参数给urllib.urlopen完成的代理处理,可以通过使用ProxyHandler对象来实现。

默认的opener会引发一个审计事件urllib.Request,参数fullurl、data、headers、method取自请求对象。

版本3.2中的更改:添加了cafile和capath。

现在尽可能支持HTTPS虚拟主机(即如果ssl.HAS_SNI为true)。

data可以是一个可迭代对象。

版本3.3中的更改:添加了cadefault。

版本3.4.3中的更改:添加了context。

版本3.10中的更改:当未给出context时,HTTPS连接现在会发送带有协议指示符http/1.1的ALPN扩展。自定义context应使用set_alpn_protocols()设置ALPN协议。

版本3.13中的更改:移除了cafile、capath和cadefault参数:改用context参数。


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层
FishC 发表于 2026-3-19 10:13
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

我加你好友了请你通过
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
qasa 发表于 2026-03-19 10:54
FishC 发表于 2026-3-19 10:13
以上回复来自 FishC A ...


以下是 urllib.request.urlopen 函数的官方文档中文翻译:

urllib.request.urlopen(url, data=None, *, context=None)

打开一个 URL。参数 url 可以是一个包含有效、正确编码的 URL 字符串,也可以是一个 Request 对象。

data 必须是一个指定要发送到服务器的附加数据的对象,如果不需要此类数据,则为 None。详情请参见 Request 的说明。

urllib.request 模块使用 HTTP/1.1,并在其 HTTP 请求中包含 Connection:close 头。

可选的 timeout 参数为阻塞操作(例如连接尝试)指定超时时间(以秒为单位)。如果未指定,将使用全局默认超时设置。这实际上仅适用于 HTTP、HTTPS 和 FTP 连接。

如果指定了 context,它必须是一个描述各种 SSL 选项的 ssl.SSLContext 实例。更多详情请参见 HTTPSConnection

此函数总是返回一个可用作上下文管理器的对象,并具有 urlheadersstatus 属性。有关这些属性的更多详细信息,请参阅 urllib.response.addinfourl

对于 HTTP 和 HTTPS URL,此函数返回一个经过略微修改的 http.client.HTTPResponse 对象。除了上述三个新方法外,其 msg 属性包含与 reason 属性相同的信息(即服务器返回的原因短语),而不是 HTTPResponse 文档中指定的响应头。

对于 FTP、file 和 data URL,此函数返回一个 urllib.response.addinfourl 对象。

发生协议错误时会引发 URLError

请注意,如果没有处理程序处理该请求,可能会返回 None(不过默认安装的全局 OpenerDirector 使用 UnknownHandler 来确保这种情况永远不会发生)。

此外,如果检测到代理设置(例如,当设置了像 http_proxy 这样的 *_proxy 环境变量时),会默认安装 ProxyHandler 并确保请求通过代理处理。

Python 2.6 及更早版本中旧的 urllib.urlopen 函数已被弃用;urllib.request.urlopen() 对应于旧的 urllib2.urlopen。之前通过向 urllib.urlopen 传递字典参数完成的代理处理,现在可以通过使用 ProxyHandler 对象来实现。

默认的 opener 会触发一个审计事件 urllib.Request,其参数 fullurldataheadersmethod 取自请求对象。

**版本变更信息:**
版本 3.2 中更改:添加了 cafilecapath 参数。
现在尽可能支持 HTTPS 虚拟主机(即,如果 ssl.HAS_SNI 为真)。
data 可以是一个可迭代对象。
版本 3.3 中更改:添加了 cadefault 参数。
版本 3.4.3 中更改:添加了 context 参数。
版本 3.10 中更改:当未给出 context 时,HTTPS 连接现在会发送带有协议指示符 http/1.1 的 ALPN 扩展。自定义上下文应使用 set_alpn_protocols() 来设置 ALPN 协议。
版本 3.13 中更改:移除了 cafilecapathcadefault 参数:请改用 context 参数。


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-23 04:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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