CS50x 2024 - Lecture 6 - Python

00:00:00 - Introduction

00:01:01 - Python

print("hello world")

与c的显著差异

1.不必显式包含标准库 

2.不再需要定义main函数

00:07:24 - Speller

00:13:41 - Filter

from PIL import Image, ImageFilterbefore = Image.open("bridge.jpg")
after = before.filter(ImageFilter.BoxBlur(10))
after.save("out.bmp")

 

 

00:17:31 - Face Recognition

00:20:53 - Functions

在c中安全地获取字符串非常烦人,c中使用cs50的get_string很有用,但是python中只是使用input()函数

# from cs50 import get_string# answer = get_string("what is your name?:")
# print("hello," + answer)
# f格式字符串
answer = input("what is your name:")
print(f"hello,{answer}")
from cs50 import get_intx = get_int("x:")
y = get_int("y:")
print(x + y)

 

00:33:24 - Types

00:34:47 - Calculator

x = int(input("x:"))
y = int(input("y:"))
print(x + y)

00:44:45 - Conditionals

在python中缩进很重要

注意是elif 

00:48:05 - Compare

s = input("do you agree?")
if s in ["y", "Y", "yes"]:print("agreed")
elif s in ["n", "N"]:print("not agreed")

00:57:18 - Object-Oriented Programming 面向对象编程

c语言的tolower或toupeer只能传入一个字符

在python中str也是对象,对象不仅可以包含值或属性,还可以内置功能,字符串内部内置函数

s = input("do you agree?").lower()
if s in ["y","yes"]:print("agreed")
elif s in ["n", "no"]:print("not agreed")

01:02:54 - Loops

range() 是一种pythonic的方式,不一定是做某事的唯一方法,但是是python社区的共识

下划线_表明它是一个变量,并且需要它来实现for循环

True在python中首字母大写

python可以循环任何可以迭代的内容。比如字符串是可以迭代的

for _ in range(3)print("hello world")

named parameters ,print的结束参数默认总是\n,如果不想换行,可以

print("hello world", end = "")

而print()可以自动添加一个换行

s = input('before: ')
print("after: ", end = "")
for c in s:print(c.upper(), end = "")
print()

upper()也是每个字符串附带的方法,不需要单独每个字符调用它 

s = input('before: ')
print("after: ", end = "")
print(s.upper())

01:13:51 - Meow

尽管在python中不需要有一个main(),但在传统中有一个main()函数,必须自己调用该函数,不会像c中被神奇地调用,python要做的最后一件事是调用main()

def main():meow(3)def meow(n):for i in range(n):print("meow")main()

01:21:20 - Truncation

python不会截断,如1/3可以得到python中的浮点数,浮点会存在不精确的问题,但是整数溢出不会出现在python中

01:25:54 - Exceptions

python支持异常,异常称为错误值,ValueError

def get_int(prompt):while True:try:return int(input(prompt))except ValueError:# print("not an integer")passdef main():x = get_int("x: ")y = get_int("y: ")print(x + y)main()

​​​​​​01:33:22 - Mario

from cs50 import get_intheight = get_int("height:")for i in range(height):for j in range(height):print("#",end = "")print()

01:39:44 - Lists

列表的真正好处是内存会自动处理,python中列表更像是链表。list也是对象,有自己的属性和函数

from cs50 import get_intscores = []
for i in range(3):score = get_int(f"score{i}: ")scores.append(score)average =  sum(scores) / len(scores)
print(f"Average: {average:.4f}")

phonebook.py 

names = ["cater","dc", "daichagn"]name = input("name: ")if name in names:print("found")
else:print("not found")

 

01:49:18 - Dictionaries

python中的字典本质上是一个哈希表,即键值对的集合

字典在编程中称为数据结构的瑞士军刀 ,可以将某物与某物联系起来

  1. for-else结构在一些场景下特别有用,例如在查找列表、元组或其他可迭代对象中是否存在特定元素时,若未找到则执行特定操作。
people = [{'name':'cater', 'number':'23452'},{'name':'dc', 'number':'564645'},{'name':'dfgd', 'number':'456456'}
]name = input('name:')
for person in people:if person['name'] == name:print(f"found number: {person['number']}")break
else:print('not found')

创建字典列表不断迭代 

方式二:想列表一样使用字典,python会在键中查找该名称

people = {'cater':'53456456','dc':'63456456','aoxue':'367457'
}
name = input('name:')
if name in people:print(f'found number {people[name]}')
else:print('not found')

01:59:58 - sys

与系统相关的库

要想在python中执行与命令行参数相关

from sys import argvif len(argv) == 2:print(f"hello, {argv[1]}")
else:print("hello world")

02:04:04 - pip             

 pip install cowsay
import cowsaycowsay.cow("this is cs50")

| this is cs50 |
  ============
            \
             \
               ^__^
               (oo)\_______
               (__)\       )\/\
                   ||----w |
                   ||     ||
src/python/ $  

import qrcode
img = qrcode.make("https://blog.csdn.net/qq_36372352?spm=1000.2115.3001.5343")
img.save('qr.png')

 

                                                                                                                                      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/686212.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

h5和微信小程序实现拍照功能(其中h5暂时无法调用闪光灯)

代码如下 <template><view class"camera"><!-- #ifdef MP --><camera ref"myCamera" id"myCamera" device-position"back" :flash"flash" error"error" style"display: block;"&…

《中国教育报》2024投稿攻略

《中国教育报》2024投稿攻略 《中国教育报》普通版&#xff0c;1800字符1/4版&#xff0c;2300字符1/3版&#xff1b;周期1-2个月 《中国教育报》理论版 收中小学&#xff0c;全包1800字符&#xff1b;2500字符。收高校 2000-2300字符&#xff0c;六个月周期。 《中国教育…

人工智能学习与实训笔记(一):零基础理解神经网络

人工智能专栏文章汇总&#xff1a;人工智能学习专栏文章汇总-CSDN博客 本篇目录 一、什么是神经网络模型 二、机器学习的类型 2.1 监督学习 2.2 无监督学习 2.3 半监督学习 2.4 强化学习 三、网络模型结构基础 3.1 单层网络 ​编辑 3.2 多层网络 3.3 非线性多层网络…

C++11---(1)

目录 一、C11简介 二、列表初始化 2.1、{ } 初始化 三、变量类型推导 3.1、auto 3.2、decltype 为什么需要decltype 四、final和override 4.1、final 4.2、override 五、默认成员函数控制 5.1、default修饰函数 5.2、delete修饰函数 六、nullptr 一、C11简介 C11是…

【STM32 CubeMX】STM32中断体系结构

文章目录 前言一、中断体系的比喻二、中断的内部结构2.1 EXTI触发方式 2.2 NVIC2.3 cpu与中断2.4 外部中断控制器框图上升沿触发选择寄存器屏蔽/使能寄存器等待处理寄存器 2.5 中断优先级 总结 前言 一、中断体系的比喻 STM32中断体系如下图所示&#xff1a; 一座大型建筑物…

STM32F1 - 系统时钟SysTick

SysTick 1> SysTick硬件框图2> SysTick的时钟源3> 1ms定时_中断方式4> 思考&#xff1a;无符号数 0 - 255 ?相关资料 1> SysTick硬件框图 SysTick属于Cotex-M3&#xff0c;是CPU外设&#xff1b; SysTick: 位宽24bit&#xff0c; 递减计数&#xff0c;自动重装…

让你的资金运动起来,金钱的聪明处理方式

一、教程描述 本套教程主要讲解了金融思维和财务思维&#xff0c;常见投资工具的实操技巧&#xff0c;资产配置方案的制定方法&#xff0c;等等&#xff0c;将会重构你现有的投资观念&#xff0c;提升你认知的宽度和深度&#xff0c;可以轻松读懂财经新闻&#xff0c;不仅学会…

spring boot3登录开发-2(1图形验证码接口实现)

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途。 目录 前置条件 内容简介 图形验证码接口实现 导入糊涂工具依赖 接口分析 编写验证码接口 测试验证码接口 前置条件 …

2024年通信安全员ABC证证模拟考试题库及通信安全员ABC证理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年通信安全员ABC证证模拟考试题库及通信安全员ABC证理论考试试题是由安全生产模拟考试一点通提供&#xff0c;通信安全员ABC证证模拟考试题库是根据通信安全员ABC证最新版教材&#xff0c;通信安全员ABC证大纲整理…

【Linux 04】编辑器 vim 详细介绍

文章目录 &#x1f308; Ⅰ 基本概念&#x1f308; Ⅱ 基本操作1. 进入 / 退出 vim2. vim 模式切换 &#x1f308; Ⅲ 命令模式1. 光标的移动2. 复制与粘贴3. 剪切与删除4. 撤销与恢复 &#x1f308; Ⅳ 底行模式1. 保存文件2. 查找字符3. 退出文件4. 替换内容5. 显示行号6. 外…

ElementUI Form:Cascader 级联选择器

ElementUI安装与使用指南 Cascader 级联选择器 点击下载learnelementuispringboot项目源码 效果图 el-cascader.vue&#xff08;Select选择器&#xff09;页面效果图 项目里el-cascader.vue代码 <script> let id 0; export default {name: el_cascader,data() {re…

线性代数的本质 2 线性组合、张成的空间、基

基于3Blue1Brown视频的笔记 一种新的看待方式 对于一个向量&#xff0c;比如说&#xff0c;如何看待其中的3和-2&#xff1f; 一开始&#xff0c;我们往往将其看作长度&#xff08;从向量的首走到尾部&#xff0c;分别在x和y上走的长度&#xff09;。 在有了数乘后&#xff0…

Netty中的适配器、Handler共享和资源管理

ChannelHandler的适配器 有一些适配器类可以将编写自定义的ChannelHandler所需要的工作降到最低限度&#xff0c; 因为它们提供了定义在对应接口中的所有方法的默认实现。因为有时会忽略那些不感兴趣的 事件&#xff0c;所以Netty提供了抽象积累ChannelInboundHandlerAdapter(…

OpenCV 4基础篇| OpenCV简介

目录 1. 什么是OpenCV2. OpenCV的发展历程3. 为什么用OpenCV4. OpenCV应用领域5. OpenCV的功能模块5.1 基本模块5.2 扩展模块5.3 常用函数目录 1. 什么是OpenCV OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库。它…

BUGKU-WEB bp

题目描述 题目截图如下&#xff1a; 进入场景看看&#xff1a; 解题思路 提示说&#xff1a;弱密码top1000&#xff1f;z???(爆破?)先看看源码有没有提示 相关工具 Burp Suit 爆破top1000字典&#xff0c;点击下载 解题步骤 随便测试账号密码admin、admin 得到提…

【AIGC】Stable Diffusion之模型微调工具

推荐一款好用的模型微调工具&#xff0c;cybertron furnace 是一个lora训练整合包&#xff0c;提供训练 lora 模型的工具集或环境。集成环境包括必要的依赖项和配置文件、预训练脚本&#xff0c;支持人物、二次元、画风、自定义lora的训练&#xff0c;以简化用户训练 lora 模型…

【刷题】牛客— NC21 链表内指定区间反转

链表内指定区间反转 题目描述思路一&#xff08;暴力破解版&#xff09;思路二&#xff08;技巧反转版&#xff09;思路三&#xff08;递归魔法版&#xff09;Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读&#xff01;&#xff01;&#xff01;下一篇文章见&…

LV.23 D2 开发环境搭建及平台介绍 学习笔记

一、Keil MDK-ARM简介及安装 Keil MDK&#xff0c;也称MDK-ARM&#xff0c;Realview MDK &#xff08;Microcontroller Development Kit&#xff09;等。目前Keil MDK 由三家国内代理商提供技术支持和相关服务。 MDK-ARM软件为基于Cortex-M、Cortex-R4、ARM7、ARM9处理器设备…

选择排序和快速排序(1)

目录 选择排序 基本思想 选择排序的实现 图片实现 代码实现 快速排序 基本思想 快速排序的实现 图片实现 代码实现 选择排序 基本思想 每一次从待排序的数据元素中选出最小&#xff08;最大&#xff09;的元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部…

网络原理-TCP/IP(7)

目录 网络层 路由选择 数据链路层 认识以太网 以太网帧格式 认识MAC地址 对比理解MAC地址和IP地址 认识MTU ARP协议 ARP协议的作用 ARP协议工作流程 重要应用层协议DNS(Domain Name System) DNS背景 NAT技术 NAT IP转换过程 NAPT NAT技术的优缺点 网络层 路由…