python入门习题练习+笔记

输出helloworld

缩进来表示代码块;同一个代码块的语句必须包含相同的缩进空格数

if True:
    print ("Answer")
    print ("True")
else:
    print ("Answer")
  print ("False")    # 缩进不一致,会导致运行错误

循环结构

Q:打印出从1到100的所有数字,但是对于3的倍数,打印“Fizz”;对于5的倍数,打印“Buzz”;同时是3和5的倍数时,打印“FizzBuzz”

for i in range(0,100):
    if i%3==0 and i%15==0:
        print("FizzBuzz")
    elif i%5==0:
        print("Buzz")
    elif i%3==0:
        print("Fizz")
    else:
        print(i)

函数和模块化编程

Q:定义一个函数,接受一个字符串作为参数,函数返回该字符串,以及该字符串所含字符个数(返回两个输出),调用该函数并打印输出。

f-string

f作为字符串前缀:允许在字符串中直接嵌入变量或表达式,这些变量或表达式会在运行时求值并插入到字符串中。用法:

  • 使用 f 或 F 作为字符串的前缀。
  • 在大括号 {} 中编写要插入的表达式。

A:

def analyze_string(s):
    return s, len(s)
result = analyze_string("Hello, World!")
print(f"字符串: '{result[0]}',字符个数: {result[1]}")

 字典

Q:创建一个字典,存储学生的姓名和他们的成绩。然后编写一个函数,计算平均成绩并找出最高分的学生。

join()

是字符串(str)类型的一个方法,用于将序列中的元素连接成一个字符串

用法:

"分隔符".join(序列)

定义stu字典,键为人名,值为数字。

用sum()方法求出值的总和total

stu = {'Mike': 66, 'Alex': 99, 'Rose': 77, 'Black': 55}
 total = sum(stu.values())

定义一个sss函数

def sss(stu):
    ave = total / len(stu) #求成绩平均值
    high = max(stu.values()) #使用max()方法求最高成绩
    students = [name for name, grade in stu.items() if grade == high] #使用字典推导式得出分数最高的所有人名
    return ave, students #函数返回平均值及所有人名

最后将平均成绩和所有人名 打印

使用join方法串联人名:

','.join(students)

A: 

stu = {'Mike': 66, 'Alex': 99, 'Rose': 77, 'Black': 55}
total = sum(stu.values())

def sss(stu):
    ave = total / len(stu)
    high = max(stu.values())
    students = [name for name, grade in stu.items() if grade == high]
    return ave, students

ave, students = sss(stu)
print(f"平均成绩:{ave}")
print(f"最高分学生:{','.join(students)}")

if __name__ == '__main__'原理作用

每一个python文件都有一个属于自己的__name__ ,它是一个系统全局变量

当python作为主程序直接运行时,__name__ 是“__main__”字符串

当python被导入(import)其他程序,__name__ 就是py的文件名

if __name__ == '__main__'就是第一种情况才能执行的条件句,程序直接运行(而不是被导入)时,__name__ == 'main'结果为真,其前后语句可执行,否则,不执行后面语句

作为程序入口:

很多的的编程语言像C/C++/C#/JAVA 等 都会有一个main主函数 作为程序入口,程序从main()主函数的第一句代码开始执行,直到main函数的最后一句代码程序运行结束

Python 属于脚本语言,不像编译型语言那样先将程序编译成二进制再运行,而是动态的逐行解释运行。不需要Main函数也能执行也就是从脚本第一行开始运行,没有统一的入口,直到脚本的最后一行。

因此__name__ == “__main__”可作为启动py文件的main函数入口

区分模块运行上下文的条件语句:

只有当模块被直接运行时(而不是被导入),__name__ 才会等于 "__main__"。这可以用来控制仅在模块作为脚本运行时执行的代码。__name__ == "__main__"可作为条件控制

测试和示例

在模块的末尾,可以编写一些测试代码或示例用法,这些代码只有在模块作为主程序运行时才会执行,不会影响模块作为库被导入时的行为

Python文件读写

Q:编写一个函数,读取一个文本文件中的内容,文件为txt格式,在txt最后追加一行任意文字并保存。再写一个函数,新增任意第一行文字并保存。

文件读取

使用open函数以只读模式'r'打开文件(with 语句确保文件被正确关闭,避免资源泄露)

#如果不使用 with 语句,你需要手动打开和关闭文件,如下所示:

python
file = open(file_path, 'r', encoding='utf-8')
try:
    original_content = file.read()
finally:
    file.close()

文件写入 

使用open函数以只写模式'w'打开文件,并写入新内容

A:

# 函数1:在文件末尾追加文本
def append_and_prepend_text_to_file(file_path, text_to_prepend, text_to_append):
    # 以读取模式打开文件,'r' 表示读取,'utf-8' 表示文件编码
    with open(file_path, 'r', encoding='utf-8') as file:
        original_content = file.read()

    # 将新文本添加到原始内容的前面和后面
    new_content = text_to_prepend + '\n' + original_content + '\n' + text_to_append

    # 以写入模式打开文件,'w' 表示写入,'utf-8' 表示文件编码
    with open(file_path, 'w', encoding='utf-8') as file:
        file.write(new_content)

# 定义文件路径
file_path = '..\helloworld.txt'

# 调用函数在文件开头和结尾新增文本
append_and_prepend_text_to_file(file_path, '这是新增的第一行文本。', '这是追加的文本。')

【Python基础】一文搞懂:Python中文件处理方法(文件的读与写操作)_python对文件的处理-CSDN博客

Python的迭代

迭代器是一个可以记住遍历的位置的对象,迭代器只能往前不会后退(可迭代对象进行迭代的过程中,有一个“人”去记录每次访问到第几条数据,以便每次迭代都可以返回下一条数据,这个“人”就是迭代器。)

如何获取迭代器:

nums =[11,22,33,44]  #是可迭代对象

print(type(nums))  #<class "list'>

nums_iter =iter(nums)  # 是迭代器

print(type(nums_iter))  # <class 'list_iterator'>

迭代机制的两个特殊方法:

__iter__和__next__。__iter__方法返回一个迭代器对象,而__next__方法则负责返回迭代器的下一个值。

当迭代器中没有更多元素时,next(it) 将抛出 StopIteration 异常。

class dd:
    def __init__(self, data):
        self.data = data
        self.index = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.index >= len(self.data):
            raise StopIteration
        current_element = self.data[self.index]
        self.index += 1
        return current_element

if __name__ == "__main__":
    list = [1, 2, 3, 4, 5]
    my_iterator = dd(list)
    for item in my_iterator:
        print(item)

面向对象

类外添加获取对象属性

示例(引用自黑马程序员):

类内部使用self获取属性值

self 作为类中方法的第一个形参,在通过对象调用方法的时候,不需要手动的传递实参值,是python解释器自动将调用该方法的对象传递给self,所以self这个形参代表的是对象

  • 18
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值