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)在数学和编程中有不同的定义和特性。

  1. 数组(Array)
    • 在数学中,数组通常指的是一系列具有相同类型(或结构)的元素,它们按照特定的顺序排列。
    • 在编程中,数组是一种数据结构,用于存储固定大小的同类型元素的集合。这些元素可以通过索引来访问,索引通常是整数,从0开始。
    • 一维数组确实是一维数据的线性表示。
  2. 集合(Set)
    • 在数学中,集合是一个无序的、不重复的元素集。集合中的元素没有特定的顺序,并且每个元素在集合中只出现一次。
    • 在编程中,集合(或称为“哈希集合”或“哈希表”)是一种数据结构,用于存储唯一元素(即没有重复)的集合。然而,它们通常不保证元素的特定顺序(尽管某些集合实现可能会按照插入顺序或某种特定顺序来迭代元素)。
    • 由于集合是无序的,并且不保证元素的特定顺序,因此它们不是一维数据的线性表示。

因此,说“一维数据采用线性方式组织,对应于数学中的数组和集合等概念”是不准确的。更准确的说法是:

  • 一维数据采用线性方式组织,对应于数学中的数组和编程中的数组数据结构。
  • 集合虽然可以存储一维数据(即集合中的元素),但由于其无序性和不保证顺序的特性,它通常不被视为一维数据的线性表示。

希望这有助于澄清这个概念!

6.字典更新两个/多个键-对

dict2 = {"k1":"v1","a":"b"}
dict2.update({"k2": "v2", "k3": "v3"})
for i in dict2.items():
    print(i,end=" ")

7.利用推导式生成

name = ["张三", "李四", "王五"]  
sign = [85, 95, 80]  
  
# 使用推导式合并两个列表为一个字典  
result={n:s for n,s in zip(name,sign)}
  
print(result)  # 输出: {'张三': 85, '李四': 95, '王五': 80}

8.列表推导式

score=[11,22,33,66,77,88]
sc=[i  for i in score  if i<60]
print(sc)

列表推导式-CSDN博客

9.数字判断

Python isalpha()函数详解-CSDN博客

Python字符串(string)常用函数_python string函数-CSDN博客

 python基础教程:isinstance() 函数_isinstance函数python-CSDN博客

# 7、编写程序,利用列表推导式将列表中的整数提取出来[123, 'hello', (1,2), 456, {23}, {'a':789}]。
import string as s
li1=[123, 'hello', (1,2), 456, {23}, {'a':789}]
li2=[i for i in li1 if isinstance(i,int)]
print(li2)

 10.切片操作

# 9、给定一个列表member0 = ["今天","天气","真好"],要求通过insert()方法和切片两种方案,把列表member0变成member1 = ["今天","的","天气","是","真好","呀"]。
member0 = ["今天","天气","真好"]
member0.insert(1,"的")
member0.insert(3,"是")
member0.insert(5,"呀")
print(member0)
member0[1::2]=["的","是","呀"]
print(member0)

11.已知键,利用get方法获取字典 的值

Python 字典 get()函数使用详解,字典获取值_字典get()方法怎么用-CSDN博客

# # 10、现有一购物车列表如下:
# carts=[{"name":"床", "price":1999, "num":1}, {"name":"枕头", "price":10,"num":2}, {"name":"被子", "price":20, "num":1}]
# 1要求通过用户输入总资产,例如:3000,然后显示购物车列表,计算购物车商品总金额,如果商品总额大于总资产,提示账户余额不足,否则,购买成功
mo=int(input("请输入总资产:"))

carts=[{"name":"床", "price":1999, "num":1}, {"name":"枕头", "price":10,"num":2}, {"name":"被子", "price":20, "num":1}]

print(carts)
sum=0
for i in range(len(carts)):
    sum+=carts[i].get("price")*carts[i].get("num")
    
if mo>sum:
    print("购买成功")
else:
    print("账户余额不足")
    

  • 18
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值