python打卡DAY2

复习:复习昨日内容并将学习内容迁移至.py文件运行
知识点:
1.变量的命名和定义
2.debug工具的使用(pycharm和vscode)
3.print函数
●题目: 定义三个变量 a, b, c,并分别将整数 1, 2, 3 赋值给它们。然后,使用 print() 函数将每个变量的值单独打印出来,每个值占一行。
●输入: 无
●输出:

如何只用 一个 print() 函数调用就实现上面分三行的输出效果?(提示:换行符 \n)

a=1
b=2
c=3
d=4
print({a}\n,{b}\n,{c}\n,{d\n})
这段代码报错主要有以下几个原因:

### 1. 缩进问题
代码中 b=2 、 c=3 和 d=4 前面有多余的空格,在 Python 里,虽然空格本身不会像在某些语言(如 Python 的代码块依靠缩进来区分)中造成语法错误,但不一致的缩进会让代码风格不规范。在这段代码里,这些多余的空格不影响语法,但最好保持一致。

### 2. 花括号使用错误
在 print 函数中,花括号 {} 通常用于格式化字符串(如 f-string),但在这段代码里使用方式有误。如果要打印变量的值,应该直接使用变量名,而不是用花括号包裹。

### 3. 换行符 \n 使用错误
在 print 函数里, \n 应该放在引号内才能作为换行符起作用,直接放在变量后面会导致语法错误。

### 4. 括号不匹配
print 函数中的 d 后面的括号不匹配,少了一个右花括号 } 。

a=1
b=2
c=3
print(f'a\nb\nc\n')
代码 print(f'a\nb\nc\n') 没有输出变量 a 、 b 、 c 的数值,而是输出了字母 a 、 b 、 c ,这是因为在 f-string 中,需要将变量名放在花括号 {} 内,Python 才会将其解析为变量并输出对应的值。当前代码里, a 、 b 、 c 直接写在字符串中,Python 会将它们当作普通的字符处理
a=1
b=2
c=3
print(f'{a}\n{b}\n{c}\n')
a=1
b=2
c=3
print(a)
print(b)
print(c)

          
在 Python 里,变量赋值后,直接将变量名作为 `print` 函数的参数,就可以输出变量对应的值,不需要使用花括号。花括号 `{}` 通常用于以下几种场景:

### 1. 定义字典
```python:/Users/renfeiyang/Desktop/Python60DaysChallenge-main/DAY2.ipynb
# 定义一个字典
my_dict = {'key1': 'value1', 'key2': 'value2'}
print(my_dict)
```

### 2. 在 f-string 中引用变量
在 f-string 里,需要用花括号 `{}` 包裹变量名,Python 才会将其解析为变量并输出对应的值。
```python:/Users/renfeiyang/Desktop/Python60DaysChallenge-main/DAY2.ipynb
a = 1
b = 2
c = 3
print(f'{a}\n{b}\n{c}')
```

而在你提供的代码里,`print` 函数直接接收变量作为参数,Python 会自动获取变量的值并输出,所以不需要加花括号。下面是你提供的代码:
```python:/Users/renfeiyang/Desktop/Python60DaysChallenge-main/DAY2.ipynb
a = 1
b = 2
c = 3
print(a)
print(b)
print(c)
```
在这个代码中,`print(a)` 会输出变量 `a` 的值 `1`,`print(b)` 会输出变量 `b` 的值 `2`,以此类推。因此,不加花括号也能正确输出变量赋值后的值。 

        
a=1
b=2
c=3
print(a,b,c)

a=1
b=2
c=3
print(a,b,c sep='\n')
这段代码报错的原因在于 print 函数中参数 sep 前缺少逗号。在 Python 里,函数的不同参数之间需要用逗号分隔。
a=1
b=2
c=3
print(a,b,c,sep='\n')
a=1,b=2,c=3
print(a,b,c,sep='\n')

          
这段代码报错主要有两个原因:

### 1. 变量赋值语法错误
在 Python 里,`a=1,b=2,c=3` 这种写法不符合语法规则。此语句试图在一行里同时对多个变量赋值,但使用的方式有误。正确的多变量赋值方式可以是分别赋值,或者用元组解包的形式。

### 2. 缩进问题
`print(a, b, c, sep='\n')` 前面有多余的空格,在 Python 中虽然空格本身不会导致语法错误,但在代码里最好保持一致的缩进风格。

以下是修正后的代码示例:
```python:/Users/renfeiyang/Desktop/Python60DaysChallenge-main/DAY2.ipynb
# 分别赋值
a = 1
b = 2
c = 3
print(a, b, c, sep='\n')

# 或者使用元组解包的方式
a, b, c = 1, 2, 3
print(a, b, c, sep='\n')
```

        
a,b,c=1,2,3
print(b,c,a,sep="\n")
格式化字符串
●题目: 创建两个变量:name 存储你的名字(字符串,例如 "小明"),city 存储你所在的城市(字符串,例如 "北京")。使用 f-string 将这两个变量组合成一句话并打印出来。
●输入: 无
●输出: (请注意输出格式中的逗号和空格)

●如果想在输出的姓名两边加上引号,例如 姓名: "小明", 城市: 北京,f-string 语句应该怎么写?
●只用一个 print() 和 f-string,如何让姓名和城市分两行输出?

name,city=小明,北京
print(f'姓名{name},城市{city}')
这段代码报错主要有两个原因:

### 1. 逗号使用错误
在 Python 里,赋值语句分割变量使用英文逗号 , ,而代码里用的是中文逗号 , ,这会导致语法错误。

### 2. 字符串编码问题
变量 小明 和 北京 是中文,需要用引号(单引号或双引号)包裹起来,不然 Python 会把它们当作未定义的变量。
name,city="小明","北京"
print(f'姓名{name},城市{city}')
name,city="小明","北京"
print(f'姓名{name}\n城市{city}')
name,city='小明','北京'
print(name,city,sep='\n')
name,city='小明','北京'
print(f'{name}住在{city}')
name,city='小明','北京'
print(f'{name}住在{city},sep='\n')
这段代码报错主要有两个原因:

### 1. 字符串引号嵌套问题
在 f-string 中,你尝试使用单引号来包裹 sep='\n' ,但整个 print 函数的参数部分已经被单引号包裹,这会导致 Python 无法正确解析字符串。你需要统一引号的使用,或者对引号进行转义。

### 2. 逗号位置错误
sep='\n' 是 print 函数的一个参数,应该与前面的 f'{name}住在{city}' 用逗号分隔,而当前代码中逗号缺失。
name,city='小明','北京'
print(f'{name}住在{city}',f'{name}爱{city}',sep='\n')
name,city='小明','北京'
print(f'{name}住在{city}\n{name}爱{city}\n你好可爱')
●题目: 定义两个整数变量,num1 赋值为 20,num2 赋值为 8。计算这两个变量的和,并将结果存储在一个新的变量 a 中;计算这两个变量的商,叫做b;计算这两个变量的余数,叫做c。然后,使用 f-string 打印出类似 “20 加 8 的结果是:28” 的信息,分成三行打印。

● 题目: 定义两个浮点数变量,price 赋值为 19.9,discount 赋值为 0.8 (表示 8 折)。计算折扣后的价格,并将结果存储在变量 final_price 中;计算节省了多少钱,存储在变量 saved_amount 中。然后,使用 f-string 分两行打印出类似以下格式的信息:
最终价格是: 15.92
节省金额是: 3.98

num1=20
num2=8
a,b,c=num1+num2,num1/num2,num1%num2
print(a,b,c,f'{num1}+{num2}的结果是{a}\n{num1}/{num2}的结果是{b}\n{num1}%{num2}的结果是{c}',sep='/n')

代码中打印 a 、 b 、 c 时没有分行,是因为 print 函数的 sep 参数值使用有误。在 Python 里,换行符是 \n ,而代码里写成了 /n , /n 会被当作普通字符串处理,不会起到换行的作用。

price,discount=19,9,0.8
final_price,save_price=price*discount,price*(1-discount)
print(f'最终价格为{final_price}\n节省金额是{save_price}')
这段代码报错的原因是变量赋值时左右两边元素数量不匹配。在 Python 里,赋值语句 price,discount=19,9,0.8 尝试将三个值 19, 9, 0.8 赋给两个变量 price 和 discount ,这会引发 ValueError 异常。

从代码逻辑推测,你可能是想将 price 设置为 19 , discount 设置为 0.8 , 9 可能是多余的
price,discount=19.9,0.8
final_price,save_price=price*discount,price*(1-discount)
print(f'最终价格为{final_price}\n节约金额为{save_price}')
题目: 定义两个字符串变量,str1 赋值为 “Hello”,str2 赋值为 “Python”。将这两个字符串拼接起来(中间加一个空格),并将结果存储在变量 greeting 中;计算 greeting 字符串的长度,存储在变量 length 中;获取 greeting 字符串的第一个字符,存储在变量 first_char 中。然后,使用 f-string 分三行打印出类似以下格式的信息:
拼接结果: Hello Python
字符串长度: 12
第一个字符: H
第二个字符:e
最后一个字符是:n

str1,str2="hello","python"
print(str1,str2)
str1,str2="Hello",'python'
greeting=str1+' '+str2
length=len(greeting)
first_char=greeting[0]
second_char=greeting[1]
last_char=greeting[-1]
print(f'拼接结果:{greeting}\n字母串长度:{length}\n第一个字符:{first_char}\n第二个字符:{second_char}\n最后一个字符:{last_char}')
比较运算
题目: 定义两个整数变量,score_a 赋值为 75,score_b 赋值为 90。比较 score_a 是否大于 score_b,将比较结果(布尔值)存储在变量 is_a_higher 中;比较 score_a 是否小于等于 score_b,将结果存储在变量 is_a_lower_or_equal 中;比较 score_a 是否不等于 score_b,将结果存储在变量 is_different 中。然后,使用 f-string 分三行打印出类似以下格式的信息:
75 是否大于 90: False
75 是否小于等于 90: True
75 是否不等于 90: True

score_a,score_b=75,90
is_a_higher=score_a>score_b
is_a_lower_or_equal=score_a<=score_b
is_different=score_a!=score_b
print(f'75是否大于90:{is_a_higher}\n75是否小于等于90:{is_a_lower_or_equal}\n75是否不等于90:{is_different}')
列表的基础操作
题目:
1.创建一个包含三个字符串元素的列表 tech_list,元素分别为 “Python”, “Java”, “Go”。
2.获取列表中的第一个元素,并将其存储在变量 first_tech 中。
3.向 tech_list 的末尾添加一个新的字符串元素 “JavaScript”。
4.修改 tech_list 中的第二个元素(索引为 1),将其从 “Java” 更改为 “Ruby”。
5.移除列表中的元素 “Go”。
6.计算当前 tech_list 的长度,并将结果存储在变量 current_length 中。
7.最后,使用 f-string 分三行打印出以下信息:
a.获取到的第一个技术名称。
b.列表当前的长度。
c.经过所有操作后,列表最终的内容。
打印格式应类似:
第一个技术是: Python
当前列表长度: 3
最终列表内容: [‘Python’, ‘Ruby’, ‘JavaScript’]

tech_list=["python",'java','go']
first_tech=tech_list[0]
tech_list.append('javascript')
tech_list[1]='ruby'
tech_list.remove('go')
current_length=len(tech_list)
print(f'第一个技术是:{first_tech}\n当前列表长度:{current_length}\n列表最终内容:{tech_list}')
如果我想在第一个元素之前添加一个元素AA应该如何操作
tech_list=['python','java', 'c']
tech_list.insert(0,'you are so lovely')
print(tech_list)
tech_list=['python','java','c++']
print(f'tech_list[0]')
代码 print(f'tech_list[0]') 没有读取列表内容,而是直接打印了字符串 tech_list[0] ,这是因为在 f-string 里,你需要把变量或者表达式放在花括号 {} 内,Python 才会解析并计算其值。

当前代码中 tech_list[0] 没有被花括号包裹,所以 Python 把它当作普通字符串处理
这里使用 f-string 有点多余,因为直接打印 tech_list[0] 会更简洁
tech_list=['python','java','c++','c']
print(tech_list[0,1,2,3],sep='\n')

          
代码 `print(tech_list[0,1,2,3],sep='\n')` 报错的原因在于 Python 列表索引的使用方式有误。在 Python 里,列表索引需要单个整数或者切片对象来访问元素,而 `(0, 1, 2, 3)` 是一个元组,不能直接作为索引传递给列表。

### 错误分析
- `tech_list[0,1,2,3]` 中,`0,1,2,3` 会被解释为一个元组 `(0, 1, 2, 3)`,Python 列表不支持使用元组作为索引,因此会抛出 `TypeError` 异常。

### 解决方案
如果你想打印列表中的所有元素,并且每个元素占一行,可以使用以下几种方法:

#### 方法一:使用循环
```python:/Users/renfeiyang/Desktop/Python60DaysChallenge-main/DAY2.ipynb
# ... existing code ...
for item in tech_list:
    print(item)
# ... existing code ...
```

#### 方法二:使用 `*` 解包操作符
```python:/Users/renfeiyang/Desktop/Python60DaysChallenge-main/DAY2.ipynb
# ... existing code ...
print(*tech_list, sep='\n')
# ... existing code ...
```

在第二种方法中,`*tech_list` 会将列表 `tech_list` 中的元素解包,作为独立的参数传递给 `print` 函数,`sep='\n'` 则确保每个元素在新的一行打印。 

        
tech_list=['python','java','c']
print(tech_list[0],tech_list[2],sep='\n')
tech_list=['python',java]
print(tech_list[1])
代码 tech_list=['python',java] 和 print(tech_list[1]) 报错的原因在于, java 没有被引号包裹。在 Python 里,当你想把一个字符串作为列表的元素时,需要用单引号 ' 或者双引号 " 把字符串括起来。当前代码中, java 会被 Python 解释器当作一个变量名,而不是字符串 "java" ,如果这个变量没有被定义,就会抛出 NameError 异常。
java=1
tech_list=['java',java]
print(tech_list)
在代码 java=1 和 tech_list=['java',java] 里,第一个 'java' 没有被认定为 1 ,原因在于它被单引号包裹,在 Python 中,被引号(单引号或者双引号)包裹的内容会被当作字符串处理。所以 'java' 是一个字符串值,而非变量名,Python 不会把它解析为变量 java 。

而第二个 java 没有引号,Python 会将其识别为变量名,进而获取该变量的值 1 。
循环for语句
计算1+100的和 用for循环来写


total=0
for i in range(1,101)
total=total+i
print(total)

          
这段代码报错的原因是 Python 语法错误。在 Python 里,`for` 循环语句结尾需要加上冒号 `:`,并且循环体里的代码需要进行缩进。当前代码缺少冒号,且 `total=total+i` 没有缩进,Python 无法正确识别这行代码属于 `for` 循环的循环体。

以下是修正后的代码:
```python:/Users/renfeiyang/Desktop/Python60DaysChallenge-main/DAY2.ipynb
total = 0
for i in range(1, 101):
    total = total + i
print(total)
```
在修正后的代码中,`for` 循环语句结尾添加了冒号 `:`,并且 `total=total+i` 进行了缩进,这样 Python 就能正确识别这行代码属于 `for` 循环的循环体了。 

        为什么一定要缩进?

          
在 Python 里,缩进是非常重要的语法规则,它用于标识代码块的范围。与其他编程语言(如 Java、C++)使用大括号 `{}` 来划分代码块不同,Python 依靠缩进来区分不同的代码块,比如 `if`、`for`、`while`、`def`、`class` 等语句后的代码块。下面详细解释缩进的必要性和格式:

### 为什么一定要缩进
Python 设计时采用缩进来明确代码块的边界,这样做能让代码看起来更加简洁、易读,强制开发者遵循统一的代码风格。例如,在 `for` 循环中,缩进能让你清楚地知道哪些代码是循环体的一部分:
```python:/Users/renfeiyang/Desktop/Python60DaysChallenge-main/DAY2.ipynb
total = 0
for i in range(1, 101):
    total = total + i
print(total)
```
在这个例子中,`total = total + i` 这行代码有缩进,表明它是 `for` 循环体的一部分,会被循环执行 100 次。而 `print(total)` 没有缩进,不属于循环体,只会在循环结束后执行一次。

### 缩进格式
Python 官方建议使用 4 个空格作为缩进单位。大多数代码编辑器和集成开发环境(IDE)都可以自动将制表符(Tab)转换为 4 个空格。你也可以在编辑器的设置中进行相应的配置。

以下是不同场景下的缩进示例:

#### `if` 语句
```python
age = 18
if age >= 18:
    print("你已成年")
else:
    print("你未成年")
```

#### `for` 循环
```python
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)
```

#### 函数定义
```python
def add_numbers(a, b):
    result = a + b
    return result
```

需要注意的是,在同一个代码块中,缩进的空格数必须保持一致,否则会引发 `IndentationError` 异常。 

        

total=0
for i in range(1,101):
    total=total+i
print(total)
判断语句
温度预警系统
1. 定义一个变量temperature存储当前温度(整数)
2. 根据以下条件判断并打印预警信息:
   - 高于35度:打印"红色预警:高温天气!"
   - 28-35度:打印"黄色预警:天气炎热"
   - 20-27度:打印"绿色提示:适宜温度"
   - 低于20度:打印"蓝色预警:注意保暖"
3. 使用if-elif-else结构实现
4. 测试用例:用38你的代码

temperature=38
if temperature>35:
    print(红色预警:高温天气)

          
在 Python 里,`print` 函数要打印的文本内容如果不加引号,会出现以下几种情况:

### 1. 语法错误
如果直接使用中文文本而不加引号,Python 解释器会把这些文本当作变量名、关键字或者表达式来处理。由于中文文本通常不是合法的 Python 变量名(Python 变量名只能包含字母、数字和下划线,且不能以数字开头),就会引发 `SyntaxError` 异常。

以你提供的代码为例:
```python:/Users/renfeiyang/Desktop/Python60DaysChallenge-main/DAY2.ipynb
temperature=38
if temperature>35:
    print(红色预警:高温天气)
```
这段代码会报错,因为 `红色预警:高温天气` 既不是合法的变量名,也不符合 Python 的语法规则。Python 解释器无法识别它,会抛出 `SyntaxError` 异常。

### 2. 变量未定义错误
假设你使用的是英文单词,并且没有加引号,Python 解释器会把它当作变量名。如果这个变量没有被定义,就会引发 `NameError` 异常。

示例代码:
```python
# 尝试打印未加引号的文本
print(hello)
```
运行这段代码会报错,因为 `hello` 没有被定义为变量,Python 解释器找不到这个变量,会抛出 `NameError: name 'hello' is not defined` 异常。

### 正确的做法
要打印文本内容,需要用引号(单引号 `'` 或双引号 `"`)把文本包裹起来,这样 Python 解释器才会把它当作字符串处理。

修正后的代码:
```python:/Users/renfeiyang/Desktop/Python60DaysChallenge-main/DAY2.ipynb
# ... existing code ...
if temperature > 35:
    print("红色预警:高温天气!")
# ... existing code ...
```
在这个修正后的代码中,`"红色预警:高温天气!"` 被双引号包裹,Python 会将其识别为字符串,从而正确打印出来。 

temperature=38
if temperature>35:
    print('红色预警:高温天气!')
elif 28<=temperature<=35:
    print('黄色预警:天气炎热')
elif 20<=temperature<=27:
    print('绿色提示:适宜温度')
else:
    print('蓝色预警:注意保暖')
1.定义一个包含整数的列表 scores,赋值为 [85, 92, 78, 65, 95, 88]。
2.初始化两个变量:excellent_count 用于记录分数大于等于 90 的个数,初始值为 0;total_score 用于累加所有分数,初始值为 0。
3.使用 for 循环遍历 scores 列表中的每一个分数。
4.在循环内部:
a.将当前分数累加到 total_score 变量上。
b.使用 if 语句判断当前分数是否大于等于 90。如果是,则将 excellent_count 变量加 1。
5.循环结束后,计算平均分 average_score(总分除以分数的个数)。
6.使用 f-string 分三行打印出以下信息:
7.优秀分数(>=90)的个数。
8.所有分数的总和。
9.所有分数的平均分(结果包含3位小数)。

打印格式应类似:
优秀分数个数: 3
分数总和: 503
平均分数: 83.833

scores_list=[85,92,78,65,95,88]
excellent_count=0
total_score=0
for score in scores_list:
    total_score=total_score+score
    if score >=90:
       excellent_count=excellent_count+1
average_score=total_score/len(scores_list)
print(f'优秀分数个数:{excellent_count}\n分数总和:{total_score}\n平均分数:{average_score:.3f}')
如果我想在加入计算优秀分数总和和平均分应该如何撰写
scores_list=[85,92,78,65,95,88]
excellent_count=0
total_score=0
excellent_total_score=0
for score in scores_list:
    total_score=total_score+score
    if score>=90:
       excellent_count=excellent_count+1
       excellent_total_score=excellent_total_score+score
average_score=total_score/len(scores_list)

if excellent_count>0:
    excellent_average_score=excellent_total_score/excellent_count
else:
    excellent_average_score=0
print(f'优秀分数个数:{excellent_count}\n分数总和:{total_score}\n平均分数:{average_score}\n优秀分数总和:{excellent_total_score}\n优秀分数平均分:{excellent_average_score }')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值