输出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这个形参代表的是对象