CS50x 2024 - Lecture 6 - Python

news2025/1/21 2:47:58

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, ImageFilter

before = 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_int

x = 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")
            pass

def main():
    x = get_int("x: ")
    y = get_int("y: ")

    print(x + y)

main()

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

from cs50 import get_int

height = 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_int

scores = []
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 argv

if len(argv) == 2:
    print(f"hello, {argv[1]}")
else:
    print("hello world")

02:04:04 - pip             

 pip install cowsay
import cowsay

cowsay.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.coloradmin.cn/o/1455065.html

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

相关文章

山西电力市场日前价格预测【2024-02-15】

日前价格预测 预测说明: 如上图所示,预测明日(2024-02-15)山西电力市场全天平均日前电价为168.98元/MWh。其中,最高日前电价为366.42元/MWh,预计出现在18:30。最低日前电价为0.00元/MWh,预计出…

黑马程序员-瑞吉外卖day9

菜品分类下拉列表 CategoryController里面写 /*** 根据条件查询分类数据** param category* return*/GetMapping("/list")ApiOperation("菜品分类目录")public R<List<Category>> list(Category category) {List<Category> list cate…

洛夫克拉夫特“克苏鲁神话”艺术风格探索(一)

克苏鲁神话引入中国时间不长&#xff0c;研究的规模也不如国外大&#xff0c;但克苏鲁神话作为神话史、奇幻小说史上的重要节点&#xff0c;有很大的影响力与非常重要的研究意义。为了促进中文语境下克苏鲁神话元素的使用和创作、更好地设计克苏鲁的呼唤游戏模组&#xff08;剧…

0206-1-网络层

第 4 章 网络层 网络层提供的两种服务 虚电路服务 数据报服务 概要: 虚电路服务与数据报服务的对比 网际协议 IP 网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。与 IP 协议配套使用的还有四个协议&#xff1a; 地址解析协议 ARP (Address Resolution Protocol)逆地…

【论文精读】SimCLR2

摘要 本文提出了一个半监督学习框架&#xff0c;包括三个步骤&#xff1a;无监督或自监督的预训练&#xff1b;有监督微调&#xff1b;使用未标记数据进行蒸馏。具体改进有&#xff1a; 发现在半监督学习&#xff08;无监督预训练有监督微调&#xff09;中&#xff0c;对于较大…

嵌入式day24

开课复工啦~ 冲冲冲&#xff01; 文件IO&#xff1a; read函数和write函数&#xff1a; &#x1f4da; write 接口有三个参数&#xff1a; fd&#xff1a;文件描述符buf&#xff1a;要写入的缓冲区的起始地址&#xff08;如果是字符串&#xff0c;那么就是字符串的起始地址&…

语义分割-基础知识

1.cls_iou计算: cls0_iou预测正确的像素个数/&#xff08;预测为该类别的像素个数真实标签为该类别的像素个数-预测正确的像素个数&#xff09; mean_iou各个类别的像素预测准确值相加/像素总个数2.转置卷积(Transposed Convolution) 转置卷积不是卷积的逆运算 转置卷积也是卷…

黑猫带你学NandFlash第2篇:NandFlash部分相关名词释义

1 前言 1.1 声明 本文依据ONFI5.1、网络资料及个人工作经验整理而成&#xff0c;如有错误请留言。 文章为付费内容&#xff0c;已加入原创侵权保护&#xff0c;禁止私自转载及抄袭。 文章所在专栏&#xff1a;《黑猫带你学&#xff1a;NandFlash详解》 1.2 本文背景 本文关…

springboot198基于springboot的智能家居系统

基于Springboot的智能家居系统 **[摘要]**社会和科技的不断进步带来更便利的生活&#xff0c;计算机技术也越来越平民化。二十一世纪是数据时代&#xff0c;各种信息经过统计分析都可以得到想要的结果&#xff0c;所以也可以更好的为人们工作、生活服务。智能家居是家庭的重要…

【java苍穹外卖项目实战三】nginx反向代理和负载均衡

文章目录 1、nginx反向代理2、nginx 反向代理的好处3、nginx 反向代理的配置方式5、nginx 负载均衡的配置方式6、nginx 负载均衡策略 我们思考一个问题&#xff1a; 前端发送的请求&#xff0c;是如何请求到后端服务的&#xff1f; 前端请求地址&#xff1a;http://localhost/…

【C++学习手札】多态:掌握面向对象编程的动态绑定与继承机制(深入)

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;世界上的另一个我 1:02━━━━━━️&#x1f49f;──────── 3:58 &#x1f504; ◀️ ⏸ ▶️ ☰ &am…

手把手教你Linux系统下的Java环境配置,简单到不行!

推荐阅读 给软件行业带来了春天——揭秘Spring究竟是何方神圣&#xff08;一&#xff09; 给软件行业带来了春天——揭秘Spring究竟是何方神圣&#xff08;二&#xff09; 文章目录 推荐阅读下载JDK安装包方式一方式二 添加环境变量验证安装情况 下载JDK安装包 方式一 1.进入…

如何引导llm为自己写prompt生成剧本

如何使用写prompt让你自己生一个狗血修仙穿越短剧&#xff0c;且短剧有趣生动让人流连忘返 好的&#xff0c;我会尝试编写一个狗血修仙穿越短剧的prompt&#xff0c;以激发你的想象力&#xff0c;让你创作出一个既有趣又生动的短剧。以下是我的prompt&#xff1a; 标题&#x…

神经网络代码实现

目录 神经网络整体框架 核心计算步骤 参数初始化 矩阵拉伸与还原 前向传播 损失函数定义 反向传播 全部迭代更新完成 数字识别实战 神经网络整体框架 核心计算步骤 参数初始化 # 定义初始化函数 normalize_data是否需要标准化def __init__(self,data,labels,layers,…

遨博I20协作臂关节逆解组Matlab可视化

AUBO I20协作臂关节逆解组Matlab可视化 前言1、RTB使用注意点2、代码与效果2.1、完整代码2.2、运行效果 总结 前言 注意&#xff1a;请预先配置好Matlab和RTB机器人工具箱环境&#xff0c;本文使用matlab2022b和RTB10.04版本 工作需要&#xff0c;使用matlab实现对六轴机械臂…

【Kubernetes in Action笔记】1.快速开始

在Kubernetes上运行一个程序 基础运行环境 当前的运行环境为使用虚拟机构建的单master集群。 [rootk8s-master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane 109d v1.27.1 k8s-node1 Ready …

Jetpack Compose 第 2 课:布局

点击查看&#xff1a;Jetpack Compose 教程 点击查看&#xff1a;Composetutorial 代码 简介 Jetpack Compose 是用于构建原生 Android 界面的新工具包。它使用更少的代码、强大的工具和直观的 Kotlin API&#xff0c;可以帮助您简化并加快 Android 界面开发。 在本教程中&a…

Centos7挂载磁盘

1 查看未挂载的磁盘 命令&#xff1a; fdisk -l红框圈中的即是本次要挂载的磁盘&#xff0c;/dev/vdb 与 /dev/vda 相比&#xff0c;其没有下方的 /dev/vda1 等信息&#xff0c;代表 /dev/vdb 磁盘并没有进行过分区操作&#xff0c;是一个新加的硬盘。 2 对新建的磁盘进行分…

2024.2.18

使用fgets统计给定文件的行数 #include<stdio.h> #include<string.h> int main(int argc, const char *argv[]) {FILE *fpNULL;if((fpfopen("./test.txt","w"))NULL){perror("open err");return -1;}fputc(h,fp);fputc(\n,fp);fput…

【Webpack】处理字体图标和音视频资源

处理字体图标资源 1. 下载字体图标文件 打开阿里巴巴矢量图标库open in new window选择想要的图标添加到购物车&#xff0c;统一下载到本地 2. 添加字体图标资源 src/fonts/iconfont.ttf src/fonts/iconfont.woff src/fonts/iconfont.woff2 src/css/iconfont.css 注意字体…