Python | 刷题笔记
1.杨辉三角的构建
n=int(input("请输入你想生成的杨辉三角行数:"))
tar=[[1],[1,1]]
for i in range(2,n):pre=tar[i-1]#用来生成后面的数字cul=[1]#用来记录当前行的数组for j in range(i-1):cul.append(pre[j]+pre[j+1])cul.append(1)tar.append(cul)print(tar)
for i in range(n):#python注意锁进 不要忘记缩进c=" "*(-i-1+n)#利用一个字符串记录空格和数字for j in tar[i]:#加上每行的元素,开始计算c=c+str(j)+" "print(c)
2.除字典类型外,所有标准对象均可以用于布尔测试?
这句话“除字典类型外,所有标准对象均可以用于布尔测试?”是错误的,因为实际上字典类型(以及其他容器类型,如列表、元组、集合等)都可以用于布尔测试。
在Python中,几乎所有的对象都有一个“真值”(truthy value),这决定了在布尔上下文中(例如
if
语句或逻辑运算)该对象如何被解释。字典类型的真值是基于其内容:如果字典是空的(即不包含任何键值对),则其在布尔上下文中被视为False
;如果字典包含至少一个键值对,则被视为True
。因此,不仅是字典类型,Python中的几乎所有标准对象(包括数字、字符串、列表、元组、集合、字典、函数、类等)都可以用于布尔测试。
总结来说,这句话错误的原因是它错误地排除了字典类型用于布尔测试的可能性。实际上,字典类型和其他标准对象一样,都可以用于布尔测试。
3.为什么dict3={[1,2,3]:"uestc"}不能创建一个字典
在Python中,字典(
dict
)的键(key)必须是不可变(immutable)的数据类型,如整数(int
)、浮点数(float
)、字符串(str
)、元组(如果元组中的元素也都是不可变的,即嵌套元组中的元素也都是不可变的)等。列表(list
)是一个可变(mutable)的数据类型,因此不能用作字典的键。在你给出的例子中:
dict3={[1,2,3]:"uestc"}
你试图使用一个列表
[1, 2, 3]
作为字典dict3
的键,这是不允许的,因为列表是可变的。如果你尝试运行这行代码,Python会抛出一个TypeError
,告诉你列表不能用作字典的键。为了创建一个有效的字典,你需要使用一个不可变类型作为键。例如,你可以使用元组(只要元组中的元素也是不可变的)或字符串作为键:
# 使用元组作为键(注意:元组内的元素也是不可变的) dict3={(1, 2, 3): "uestc"} # 使用字符串作为键 dict3={"123": "uestc"}
这样你就可以成功地创建字典了。
4.为什么错了
def sho(nu):for n in nu:print(n)sho(3.4)
在Python中,当你尝试对一个非迭代对象(比如整数、浮点数、布尔值等)进行迭代时,你会遇到一个
TypeError
,因为这些类型的对象并不支持迭代操作。为了修复这个错误,你需要确保传递给
sho
函数的参数是一个可迭代对象,比如列表、元组、字符串、集合或字典等。例如:def sho(nu): for n in nu: print(n) # 使用列表 sho([1, 2, 3, 4]) # 使用元组 sho((1, 2, 3, 4)) # 使用字符串 sho("hello") # 使用集合 sho({1, 2, 3, 4}) # 使用字典(注意这会迭代字典的键) sho({'a': 1, 'b': 2, 'c': 3})
如果你想要函数能够接受单个数字(比如浮点数
3.4
)并打印它,你不需要迭代,直接打印即可:def sho(nu): print(nu) sho(3.4)
5.为什么错了:一维数据采用线性方式组织,对应于数学中的数组和集合等概念
你提到的“一维数据采用线性方式组织,对应于数学中的数组和集合等概念”在严格意义上并不完全准确,因为数组(array)和集合(set)在数学和编程中有不同的定义和特性。
- 数组(Array):
- 在数学中,数组通常指的是一系列具有相同类型(或结构)的元素,它们按照特定的顺序排列。
- 在编程中,数组是一种数据结构,用于存储固定大小的同类型元素的集合。这些元素可以通过索引来访问,索引通常是整数,从0开始。
- 一维数组确实是一维数据的线性表示。
- 集合(Set):
- 在数学中,集合是一个无序的、不重复的元素集。集合中的元素没有特定的顺序,并且每个元素在集合中只出现一次。
- 在编程中,集合(或称为“哈希集合”或“哈希表”)是一种数据结构,用于存储唯一元素(即没有重复)的集合。然而,它们通常不保证元素的特定顺序(尽管某些集合实现可能会按照插入顺序或某种特定顺序来迭代元素)。
- 由于集合是无序的,并且不保证元素的特定顺序,因此它们不是一维数据的线性表示。
因此,说“一维数据采用线性方式组织,对应于数学中的数组和集合等概念”是不准确的。更准确的说法是:
- 一维数据采用线性方式组织,对应于数学中的数组和编程中的数组数据结构。
- 集合虽然可以存储一维数据(即集合中的元素),但由于其无序性和不保证顺序的特性,它通常不被视为一维数据的线性表示。
希望这有助于澄清这个概念!