删去不需要的代码
This commit is contained in:
@@ -1,49 +0,0 @@
|
|||||||
## 第一: print 后面跟着英文括号,不要写等号!!!
|
|
||||||
|
|
||||||
### 下面是错误的:
|
|
||||||
|
|
||||||
```py
|
|
||||||
print=("China")
|
|
||||||
```
|
|
||||||
|
|
||||||
## 第二: 所有的符号都是英文的
|
|
||||||
|
|
||||||
### 下面是错误的:
|
|
||||||
|
|
||||||
```py
|
|
||||||
print("China")
|
|
||||||
print(“China”)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 第三:下面的写法是等价的
|
|
||||||
|
|
||||||
### 第一种:
|
|
||||||
|
|
||||||
```py
|
|
||||||
a="China"
|
|
||||||
print(a)
|
|
||||||
```
|
|
||||||
|
|
||||||
### 第二种:
|
|
||||||
|
|
||||||
```py
|
|
||||||
print("China")
|
|
||||||
```
|
|
||||||
|
|
||||||
## 第四:输出有几行就需要几个print()
|
|
||||||
|
|
||||||
### 输出三行你好:
|
|
||||||
|
|
||||||
```py
|
|
||||||
print("你好")
|
|
||||||
print("你好")
|
|
||||||
print("你好")
|
|
||||||
```
|
|
||||||
|
|
||||||
## 第五:每行输出多个
|
|
||||||
|
|
||||||
```py
|
|
||||||
print("程旭", "赵铖洋", "於锦诚", "叶小斌", "洋芋头", "池涛涛")
|
|
||||||
```
|
|
||||||
|
|
||||||
在右边的代码中找找茬吧,Let's GO
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
print(“黄岩一职”)
|
|
||||||
|
|
||||||
print(“黄岩一职”)
|
|
||||||
|
|
||||||
print=(黄岩一职”)
|
|
||||||
|
|
||||||
Print(a)
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 165 KiB |
@@ -1,50 +0,0 @@
|
|||||||

|
|
||||||
|
|
||||||
## input() 的简单用法
|
|
||||||
|
|
||||||
这是书上没有讲的内容
|
|
||||||
|
|
||||||
`input()` 函数会等待用户输入,等用户输入结束,按下回车键后,得到用户输入的内容,数据类型是**文字**类型
|
|
||||||
|
|
||||||
比如:
|
|
||||||
|
|
||||||
```py
|
|
||||||
# 变量a得到的就是用户输入的内容
|
|
||||||
a = input("请输入的你的姓名:")
|
|
||||||
# 使用加号连接两段文字
|
|
||||||
print("你的姓名是:"+a)
|
|
||||||
```
|
|
||||||
|
|
||||||
在 Thonny 上演示,注意:input() 函数括号中的文字是输入时候的提示语。
|
|
||||||
|
|
||||||
## 在【判题狗】中,所有的输入都不要写提示语
|
|
||||||
|
|
||||||
## 重要提醒:用户输入的内容是不会出现在代码中的
|
|
||||||
|
|
||||||
因为你无法预测用户会输入什么
|
|
||||||
|
|
||||||
## 当遇到用户输入的是一个整数或一个小数
|
|
||||||
|
|
||||||
因为 `input()` 得到的都是文字类型,所以看上去输入了一个数字,其实文字,所以我们需要进行类型转换
|
|
||||||
|
|
||||||
### 输入一个整数,比如输入 10
|
|
||||||
|
|
||||||
```py
|
|
||||||
# 用 int() 包裹 input(),这样得到的 a 就是一个整数类型
|
|
||||||
a=int(input())
|
|
||||||
print(a+10)
|
|
||||||
```
|
|
||||||
|
|
||||||
输入:10
|
|
||||||
输出:20
|
|
||||||
|
|
||||||
### 输入一个小数,比如输入 3.14
|
|
||||||
|
|
||||||
```py
|
|
||||||
# 用 float() 包裹 input(),这样得到的 a 就是一个小数类型
|
|
||||||
a=float(input())
|
|
||||||
print(a-3)
|
|
||||||
```
|
|
||||||
|
|
||||||
输入:3.14
|
|
||||||
输出:0.14
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
遇到以下情况:
|
|
||||||
|
|
||||||
## 输入的文字,用空格隔开。比如:你好 世界
|
|
||||||
|
|
||||||
你输入的`"你好 世界"`是一句话,但是你需要得到 `"你好"` 和 `"世界"`,并分别赋值给两个变量a和b。
|
|
||||||
|
|
||||||
你需要这样写:
|
|
||||||
|
|
||||||
```py
|
|
||||||
a,b=input().split()
|
|
||||||
```
|
|
||||||
|
|
||||||
如果是三个用空格隔开,比如:小明 小华 小王
|
|
||||||
|
|
||||||
```py
|
|
||||||
a,b,c=input().split()
|
|
||||||
```
|
|
||||||
|
|
||||||
那 `a` 代表 小明,`b` 代表 小华,`c` 代表 小王
|
|
||||||
|
|
||||||
## 输入两个整数,用空格隔开。比如:10 20
|
|
||||||
|
|
||||||
写法如下:
|
|
||||||
|
|
||||||
```py
|
|
||||||
n=input().split()
|
|
||||||
|
|
||||||
a=int(n[0])
|
|
||||||
b=int(n[1])
|
|
||||||
```
|
|
||||||
|
|
||||||
如果是三个整数,以此类推:
|
|
||||||
|
|
||||||
```py
|
|
||||||
n=input().split()
|
|
||||||
|
|
||||||
a=int(n[0])
|
|
||||||
b=int(n[1])
|
|
||||||
c=int(n[2])
|
|
||||||
```
|
|
||||||
|
|
||||||
## 要是小数。比如:2.33 5.18
|
|
||||||
|
|
||||||
写法如下:
|
|
||||||
|
|
||||||
```py
|
|
||||||
n=input().split()
|
|
||||||
|
|
||||||
a=float(n[0])
|
|
||||||
b=float(n[1])
|
|
||||||
```
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
# 两个文字,用空格隔开,比如:C语言 Python
|
|
||||||
a,b=input().split()
|
|
||||||
|
|
||||||
# 三个整数,用空格隔开,比如:1 3 5
|
|
||||||
n=input().split()
|
|
||||||
x=int(n[0])
|
|
||||||
y=int(n[1])
|
|
||||||
z=int(n[2])
|
|
||||||
|
|
||||||
# 四个小数,用空格隔开,比如:1.2 1.4 5.3 0.3
|
|
||||||
n=input().split()
|
|
||||||
a=float(n[0])
|
|
||||||
b=float(n[1])
|
|
||||||
c=float(n[2])
|
|
||||||
d=float(n[3])
|
|
||||||
|
|
||||||
# 使用 map 的简化写法
|
|
||||||
# 五个整数用空格隔开
|
|
||||||
a,b,c,d,e=map(int, input().split())
|
|
||||||
|
|
||||||
# 六个小数用空格隔开
|
|
||||||
a,b,c,d,e,f=map(float, input().split())
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
经常会有输出要保留N位小数的情况,比如:[1046 圆的面积](https://oj.xuyue.cc/problem/1046) 这道题需要保留4位小数
|
|
||||||
|
|
||||||
## "%.2f" % 方法
|
|
||||||
|
|
||||||
使用方法如下:
|
|
||||||
|
|
||||||
```py
|
|
||||||
a=1.23456
|
|
||||||
|
|
||||||
print("%.4f" % a)
|
|
||||||
print("%.3f" % a)
|
|
||||||
print("%.2f" % a)
|
|
||||||
```
|
|
||||||
|
|
||||||
得到的结果
|
|
||||||
|
|
||||||
```py
|
|
||||||
1.2346
|
|
||||||
1.235
|
|
||||||
1.23
|
|
||||||
```
|
|
||||||
|
|
||||||
这个方法**会进行四舍五入**
|
|
||||||
|
|
||||||
### 注意:"%.2f" % 后面只能跟着一个变量或运算结果,不能跟着计算表达式
|
|
||||||
|
|
||||||
下面代码运行会**报错**:
|
|
||||||
|
|
||||||
```py
|
|
||||||
a=10
|
|
||||||
b=3
|
|
||||||
print("%.2f" % a/b) # 这里是错误的❌
|
|
||||||
```
|
|
||||||
|
|
||||||
可以改成:
|
|
||||||
|
|
||||||
```py
|
|
||||||
a=10
|
|
||||||
b=3
|
|
||||||
c=a/b
|
|
||||||
print("%.2f" % c) # 这样是正确的✔
|
|
||||||
```
|
|
||||||
|
|
||||||
或者,把计算表达式用括号包起来
|
|
||||||
|
|
||||||
```py
|
|
||||||
a=10
|
|
||||||
b=3
|
|
||||||
print("%.2f" % (a/b)) # 这样是正确的✔
|
|
||||||
```
|
|
||||||
|
|
||||||
## format() 函数
|
|
||||||
|
|
||||||
使用方法如下:
|
|
||||||
|
|
||||||
```py
|
|
||||||
a=1.23456
|
|
||||||
|
|
||||||
print(format(a, ".4f"))
|
|
||||||
print(format(a, ".3f"))
|
|
||||||
print(format(a, ".2f"))
|
|
||||||
```
|
|
||||||
|
|
||||||
**不要忘记小数点**
|
|
||||||
|
|
||||||
得到的结果
|
|
||||||
|
|
||||||
```py
|
|
||||||
1.2346
|
|
||||||
1.235
|
|
||||||
1.23
|
|
||||||
```
|
|
||||||
|
|
||||||
这个方法**会进行四舍五入**
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
a=1.23456
|
|
||||||
|
|
||||||
print("%.4f" % a)
|
|
||||||
print("%.3f" % a)
|
|
||||||
print("%.2f" % a)
|
|
||||||
|
|
||||||
print(format(a, ".4f"))
|
|
||||||
print(format(a, ".3f"))
|
|
||||||
print(format(a, ".2f"))
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 35 KiB |
@@ -1,31 +0,0 @@
|
|||||||
你会经常遇到变量和文字连接的场景:如果这个变量是文字类型,那还比较简单,直接使用➕连接。但是这个变量是**数字**,就麻烦了,比如:
|
|
||||||
|
|
||||||
```py
|
|
||||||
a=1
|
|
||||||
print("计算机"+a+"班")
|
|
||||||
```
|
|
||||||
|
|
||||||
这样会报错
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
报错的信息表示:文字不能和数字相连接,必须先把数字转成文字。
|
|
||||||
|
|
||||||
遇到这种变量和文字拼接的题目,使用格式化文字比较容易解决,同样上面的代码可以改成:
|
|
||||||
|
|
||||||
```py
|
|
||||||
a=1
|
|
||||||
print(f"计算机{a}班")
|
|
||||||
```
|
|
||||||
|
|
||||||
得到结果:计算机1班
|
|
||||||
|
|
||||||
记住格式:**引号前面写个f,然后变量用{}包裹**
|
|
||||||
|
|
||||||
并且,{}里面可以写表达式,可以得到运算的结果:
|
|
||||||
|
|
||||||
```py
|
|
||||||
print(f"1+1={1+1}")
|
|
||||||
```
|
|
||||||
|
|
||||||
得到结果:1+1=2
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
a=1
|
|
||||||
print(f"计算机{a}班")
|
|
||||||
|
|
||||||
# 四则运算
|
|
||||||
print(f"1 + 1 = {1+1}")
|
|
||||||
print(f"1 - 1 = {1-1}")
|
|
||||||
print(f"1 * 1 = {1*1}")
|
|
||||||
print(f"1 / 1 = {1//1}")
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
> 全都怪我
|
|
||||||
> 不该沉默时沉默
|
|
||||||
> 该勇敢时软弱
|
|
||||||
> 如果不是我
|
|
||||||
> 误会自己洒脱
|
|
||||||
> 让我们难过
|
|
||||||
> 可当初的你
|
|
||||||
> 和现在的我
|
|
||||||
> 假如重来过 ——《可惜没如果》
|
|
||||||
|
|
||||||
你的爱情可惜没如果,但是Python不可惜,因为Python有if(不愧是年度最佳烂梗
|
|
||||||
|
|
||||||
## 学好if就一句话:注意缩进!
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.5 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.4 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 118 KiB |
@@ -1,26 +0,0 @@
|
|||||||
自测猫有个功能是可以看见循环过程的,叫做【可视化调试】,打开 [自测猫](https://code.xuyue.cc)
|
|
||||||
|
|
||||||
复制以下代码到自测猫
|
|
||||||
|
|
||||||
```py
|
|
||||||
print("我要开始循环啦!")
|
|
||||||
i=0
|
|
||||||
while i<10:
|
|
||||||
print("我在循环内", i)
|
|
||||||
i=i+1
|
|
||||||
print("结束循环啦!")
|
|
||||||
```
|
|
||||||
|
|
||||||
点击红色的【调试】按钮,弹出调试框:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
绿色箭头表示当前正在执行,红色箭头表示下一步要执行。点击下一步,开始调试。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
当然你也可以来回拖动进步条,这样代码就会跟着你的想法,想走到哪一步就走到哪一步。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
右侧可以看到当前变量的值。
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
import http from "utils/http"
|
|
||||||
|
|
||||||
export async function list() {
|
|
||||||
const res = await http.get("tutorials")
|
|
||||||
return res.data
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
export async function get(id: string) {
|
|
||||||
const res = await http.get(`tutorial/${id}`)
|
|
||||||
return res.data
|
|
||||||
}
|
|
||||||
@@ -1,142 +0,0 @@
|
|||||||
<script setup lang="ts">
|
|
||||||
import { Icon } from "@iconify/vue"
|
|
||||||
import { useLearnStore } from "./store"
|
|
||||||
|
|
||||||
const CodeEditor = defineAsyncComponent(
|
|
||||||
() => import("~/shared/components/CodeEditor.vue"),
|
|
||||||
)
|
|
||||||
|
|
||||||
const route = useRoute()
|
|
||||||
const learnStore = useLearnStore()
|
|
||||||
|
|
||||||
const content = shallowRef()
|
|
||||||
|
|
||||||
async function init() {
|
|
||||||
content.value = defineAsyncComponent(
|
|
||||||
() => import(`./${learnStore.dirname}/index.md`),
|
|
||||||
)
|
|
||||||
learnStore.currentTitle = learnStore.menu[learnStore.current - 1]
|
|
||||||
.label as string
|
|
||||||
|
|
||||||
try {
|
|
||||||
const raw = await import(`./${learnStore.dirname}/main.py?raw`)
|
|
||||||
learnStore.code = raw.default
|
|
||||||
learnStore.showCode = true
|
|
||||||
} catch (err) {
|
|
||||||
learnStore.code = ""
|
|
||||||
learnStore.showCode = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
watch(
|
|
||||||
() => route.params.step,
|
|
||||||
async () => {
|
|
||||||
if (route.name !== "learn") return
|
|
||||||
init()
|
|
||||||
},
|
|
||||||
{ immediate: true },
|
|
||||||
)
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<n-grid :cols="2" :x-gap="24">
|
|
||||||
<n-gi :span="1">
|
|
||||||
<n-flex vertical>
|
|
||||||
<n-flex align="center">
|
|
||||||
<n-button
|
|
||||||
text
|
|
||||||
:disabled="learnStore.current == 1"
|
|
||||||
@click="learnStore.prev"
|
|
||||||
>
|
|
||||||
<Icon :width="30" icon="pepicons-pencil:arrow-left"></Icon>
|
|
||||||
</n-button>
|
|
||||||
<n-dropdown size="large" :options="learnStore.menu" trigger="click">
|
|
||||||
<n-button tertiary style="flex: 1" size="large">
|
|
||||||
<n-flex align="center">
|
|
||||||
<span style="font-weight: bold">
|
|
||||||
{{ learnStore.currentTitle }}
|
|
||||||
</span>
|
|
||||||
<Icon :width="24" icon="proicons:chevron-down"></Icon>
|
|
||||||
</n-flex>
|
|
||||||
</n-button>
|
|
||||||
</n-dropdown>
|
|
||||||
<n-button
|
|
||||||
text
|
|
||||||
:disabled="learnStore.current == learnStore.total"
|
|
||||||
@click="learnStore.next"
|
|
||||||
>
|
|
||||||
<Icon :width="30" icon="pepicons-pencil:arrow-right"></Icon>
|
|
||||||
</n-button>
|
|
||||||
</n-flex>
|
|
||||||
<n-flex vertical size="large">
|
|
||||||
<Component :is="content"></Component>
|
|
||||||
<n-flex justify="space-between">
|
|
||||||
<div style="flex: 1">
|
|
||||||
<n-button
|
|
||||||
block
|
|
||||||
style="height: 60px"
|
|
||||||
v-if="learnStore.current !== 1"
|
|
||||||
@click="learnStore.prev"
|
|
||||||
>
|
|
||||||
上一课时
|
|
||||||
</n-button>
|
|
||||||
</div>
|
|
||||||
<div style="flex: 1">
|
|
||||||
<n-button
|
|
||||||
block
|
|
||||||
style="height: 60px"
|
|
||||||
v-if="learnStore.current !== learnStore.total"
|
|
||||||
@click="learnStore.next"
|
|
||||||
>
|
|
||||||
下一课时
|
|
||||||
</n-button>
|
|
||||||
</div>
|
|
||||||
</n-flex>
|
|
||||||
</n-flex>
|
|
||||||
</n-flex>
|
|
||||||
</n-gi>
|
|
||||||
<n-gi :span="1">
|
|
||||||
<n-flex vertical>
|
|
||||||
<CodeEditor
|
|
||||||
v-show="learnStore.showCode"
|
|
||||||
language="Python3"
|
|
||||||
v-model="learnStore.code"
|
|
||||||
/>
|
|
||||||
</n-flex>
|
|
||||||
</n-gi>
|
|
||||||
</n-grid>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
html.dark .shiki,
|
|
||||||
html.dark .shiki span {
|
|
||||||
color: var(--shiki-dark) !important;
|
|
||||||
background-color: var(--shiki-dark-bg) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.markdown-body code {
|
|
||||||
font-size: 20px;
|
|
||||||
font-family: "Monaco";
|
|
||||||
}
|
|
||||||
|
|
||||||
.markdown-body h2 {
|
|
||||||
font-size: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.markdown-body h3 {
|
|
||||||
font-size: 22px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.markdown-body p {
|
|
||||||
font-size: 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.markdown-body img {
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.markdown-body a {
|
|
||||||
color: #4493f8;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
重生之我写Python?
|
|
||||||
会赢的!
|
|
||||||
不是,你怎么说话带空格啊?
|
|
||||||
你这身高绝对没有1米76
|
|
||||||
优美的Python语言之f**k-string
|
|
||||||
全都怪我,不该沉默时沉默
|
|
||||||
可以看到的循环
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
import sidebar from "./menu.md?raw"
|
|
||||||
|
|
||||||
export const useLearnStore = defineStore("learn", () => {
|
|
||||||
const route = useRoute()
|
|
||||||
const router = useRouter()
|
|
||||||
|
|
||||||
const code = ref("")
|
|
||||||
const input = ref("")
|
|
||||||
const output = ref("黄岩一职")
|
|
||||||
const showCode = ref(true)
|
|
||||||
const currentTitle = ref("")
|
|
||||||
|
|
||||||
const current = computed(() => {
|
|
||||||
if (!route.params.step || !route.params.step.length) return 1
|
|
||||||
else {
|
|
||||||
return parseInt(route.params.step[0])
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
const dirname = computed(() => current.value.toString().padStart(2, "0"))
|
|
||||||
|
|
||||||
const menu: DropdownOption[] = sidebar
|
|
||||||
.split("\n")
|
|
||||||
.filter((title) => !!title)
|
|
||||||
.map((title: string, index) => {
|
|
||||||
const dirname = (index + 1).toString().padStart(2, "0")
|
|
||||||
const prefix = `第 ${index + 1} 课:`
|
|
||||||
return {
|
|
||||||
key: dirname,
|
|
||||||
label: prefix + title,
|
|
||||||
props: {
|
|
||||||
onClick: () => {
|
|
||||||
router.push(`/learn/${dirname}`)
|
|
||||||
currentTitle.value = prefix + title
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
function next() {
|
|
||||||
if (current.value === menu.length) return
|
|
||||||
const dest = (current.value + 1).toString().padStart(2, "0")
|
|
||||||
router.push("/learn/" + dest)
|
|
||||||
}
|
|
||||||
|
|
||||||
function prev() {
|
|
||||||
if (current.value === 1) return
|
|
||||||
const dest = (current.value - 1).toString().padStart(2, "0")
|
|
||||||
router.push("/learn/" + dest)
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
code,
|
|
||||||
input,
|
|
||||||
output,
|
|
||||||
showCode,
|
|
||||||
currentTitle,
|
|
||||||
total: menu.length,
|
|
||||||
current,
|
|
||||||
dirname,
|
|
||||||
menu,
|
|
||||||
next,
|
|
||||||
prev,
|
|
||||||
}
|
|
||||||
})
|
|
||||||
@@ -142,4 +142,8 @@ watch(
|
|||||||
)
|
)
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style></style>
|
<style>
|
||||||
|
.md-editor-preview .md-editor-code .md-editor-code-head {
|
||||||
|
z-index: 100;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
Reference in New Issue
Block a user