60天Python训练 day3

列表的基础操作

例1. ① 创建一个包含三个字符串元素的列表tech_list,元素分别为“Python,Java,Go”。

② 获取列表中第一个元素,并将其存储在变量first_tech中。

③ 向tech_list的末尾添加一个新的字符串元素“JavaScript”。

④ 修改tech_list中的第二个元素(索引为1),将其从“Java”更改为“Ruby”。

⑤ 移除列表中的元素“Go”。

⑥ 计算当前tech_list的长度,将结果存储在变量currtent_length中。

⑦ 最后,使用f-string分成三行打印出以下信息

第一个技术是:Python

当前列表长度:3

最终列表内容:['Python', 'Ruby', 'JavaScript']

知识点:笔记P35—列表

#列表的创建
tech_list = ["Python","Java","Go"]

#列表元素的索引(类似于数组索引,切片也是)
first_tech = tech_list[0]
#列表tech_list中第1个元素使“Python”,是一个字符串,所以first_tech成了一个字符串

#列表元素的修改
#添加
tech_list.append("JavaScript")
#修改第二个元素
tech_list[1] = "Ruby"
#删除:remove(删除列表中第一个出现的指定元素)
tech_list.remove("Go")

#计算列表的长度
current_length = len(tech_list)

#使用f-string分三行格式化输出
#获取到的第一个技术名称
print(f"第一个技术是:{first_tech}")
#列表当前的长度
print(f"当前列表的长度:{current_length}")
#列表最终的内容
print(f"最终列表内容:{tech_list}")

第一个技术是:Python
当前列表的长度:3
最终列表内容:['Python', 'Ruby', 'JavaScript']   

【注】(1)在 Python 里调用对象方法的基本形式是  对象名.方法名(参数列表) ,参数列表根据方法定义来确定是否需要以及需要哪些参数。

(2)上述tech_list.append("JavaScript")不能写成tech_list = tech_list.append("JavaScript"),不能理解为赋值,否则会错误,因为tech_list.append("JavaScript")返回值的是None

解释:在 Python 里,部分函数或方法可以直接对对象进行原地修改,无需重新赋值就能改变对象的状态

①需要重新赋值的操作

像数值、字符串、元组这类不可变对象,对它们进行修改时需要重新赋值,因为不可变对象一旦创建,其值就不能被改变,每次修改实际上是创建了一个新的对象。

s = "hello"
print(f"修改前 s 的值: {s},内存地址: {id(s)}")
s = s + " world"  # 重新赋值
print(f"修改后 s 的值: {s},内存地址: {id(s)}")
修改前 s 的值: hello,内存地址: 2271489577072
修改后 s 的值: hello world,内存地址: 2271489522416

②原地修改的操作

my_list = [1, 2, 3]
print(f"修改前列表: {my_list},内存地址: {id(my_list)}")
my_list.append(4)  # 原地修改,无需重新赋值
print(f"修改后列表: {my_list},内存地址: {id(my_list)}")
修改前列表: [1, 2, 3],内存地址: 2287626506944
修改后列表: [1, 2, 3, 4],内存地址: 2287626506944
#append() 方法直接在原列表末尾添加元素,列表的内存地址没有改变,说明是在原对象上进行修改。

循环for语句

例2. 计算1+2+...+100的和,用for循环来写

知识点:笔记P28—循环结构:for循环

sum =  0
for i in range(1,101):
#range(1,101)是一个左闭右开的区间,包含1但不包含101
#不要漏掉冒号
    sum += i
    #等价于sum = sum + i  笔记P21
print(sum)
5050

判断语句

例3. 红温预警系统:通过input()函数以提问的方式判断你的红温系数,在输出你可能的反应

1. 提问:①你是否被gank了?(1/0)  ②是否被越塔?(1/0)  ③我方打野是否是奇迹行者?(1/0)  ④是否被队友骂了?(1/0)   输入均为1/0

2. input() 函数返回的是字符串类型的数据,转化为整形依次存储在num1—num4方便后续计算与比较

3. 计算红温系数=num1*20 + num2*20 + num3*20 + num4*30并存储在anger_level中

2. 用if-elif-else结构根据以下条件判断并打印红温信息:

- [90,+oo):打印“警告!警告(兰博声音)!彻底红温1喷4!”

- [70,90):打印“MD不想玩了(捶桌子),洗澡去了”

- [50,70): 打印“摆烂自己玩自己的”

-[30,50):打印“不是哥们儿(阴阳怪气),你在玩什么啊”

-[20,30):打印“心态发生变化”

-[0,20):打印“嘻嘻这游戏真好玩”

知识点:①笔记P24—多分支结构if...elif(即else if)...else  ②笔记P8—input()函数的使用

be_ganked_or_not = input("你是否被gank了?(1/0)")
bei_yue_ta = input("是否被越塔?(1/0)")
our_jug_qijixingzhe = input("我方打野是奇迹行者吗?(1/0)")
be_scolded_by_teammates = input("是否被队友骂了?(1/0)")

#input()返回的是字符串类型,需要进行类型转换
num1 = int(be_ganked_or_not)
num2 = int(bei_yue_ta)
num3 = int(our_jug_qijixingzhe)
num4 = int(be_scolded_by_teammates)

anger_level = num1*20 + num2*20 + num3*20 + num4*30
if anger_level >= 90:
    print("警告!警告(兰博音)!彻底红温1喷4")
elif anger_level >= 70:
        print("MD不想玩了(捶桌子),洗澡去了")
elif anger_level >= 50:
            print("摆烂自己玩自己的")
elif anger_level >= 30:
                print("不是哥们儿(阴阳怪气),你在玩什么啊")
elif anger_level >= 20:
                    print("心态发生变化")
else:
                        print("嘻嘻这游戏真好玩")
你是否被gank了?(1/0)1
是否被越塔?(1/0)1
我方打野是奇迹行者吗?(1/0)1
是否被队友骂了?(1/0)1
警告!警告(兰博音)!彻底红温1喷4

【注】关于input()函数

(1)不带提示

# 调用 input() 函数,程序会暂停等待用户输入
user_input = input()
print(f"你输入的内容是: {user_input}")
1
你输入的内容是: 1

(2)带提示

# 提供提示信息,引导用户输入姓名
name = input("请输入你的姓名: ")
print(f"你好,{name}! 欢迎使用本程序。")
请输入你的姓名: faker
你好,faker! 欢迎使用本程序。

(3)连续获得多个输入并将input()返回值转换为其他类型

# 连续获取用户输入的两个数字,并计算它们的和
num1_str = input("请输入第一个数字: ")
num2_str = input("请输入第二个数字: ")
try:
    num1 = float(num1_str)
    num2 = float(num2_str)
#笔记P13,数据类型转换

    result = num1 + num2
    print(f"{num1} + {num2} = {result}")
except ValueError:
    print("输入无效,请输入有效的数字。")

#  - try 块: age = int(age_str) 这行代码尝试把用户输入的字符串 age_str 转换为整数。但如果用户输入的不是有效的整数(比如输入字母、小数等), int() 函数就会抛出 ValueError 异常。
#  - except ValueError 块:当 try 块中的 int(age_str) 抛出 ValueError 异常时,程序会跳过 try 块中剩余的代码,转而执行 except 块中的代码,也就是打印 "输入无效,请输入一个有效的整数。" ,这样程序就不会因为异常而崩溃,而是能给用户友好的提示。
请输入第一个数字: 2
请输入第二个数字: 3
2.0 + 3.0 = 5.0

例4. ①定义一个包含整数的列表score,赋值[85,92,78,65,95,88] 

②初始化两个变量:excell_count用于记录分数大于等于90的个数,初始值为0;total_score用于累加所有分数,初始值为0。

③使用for循环遍历score列表中每一个分数。

④在训话内部:

a. 将当前分数累加到total_score变量上

b. 使用if语句判断当前分数是否大于等于90,如果是,则将excell_count变量+1.

⑤循环结束后,计算平均分average_score(打印是保留3位小数)

⑥ 使用f-string分三行打印出以下信息

优秀分数个数:2

分数总和:503

平均分数:83.833

score = [85,92,78,65,95,88]
excellent_count = 0
total_count = 0

for i in score:
    total_count += i
    if i >= 90:
       excellent_count += 1

length = len(score)
average_score = total_count / length
print(f"优秀分数(>=90)的个数:{excellent_count}",f"分数总合:{total_count}",f"平均分数:{average_score:.3f}",sep='\n')
优秀分数(>=90)的个数:2
分数总合:503
平均分数:83.833

【注】注意缩进,if语句应该是包含在for循环结构内的,而后面3行又不应该包含在if语句内,不然会出错

@浙大疏锦行

你可能感兴趣的:(python,windows,开发语言)