二、基础语法:手指抽筋模拟器

标题就是本节要用Python做的小游戏:手指抽筋模拟器。这是一个可升级游戏,现在我们要实现它的第一级:基础语法级。

玩法:手指不停的点击,看你能点多快!

别走,别走!我知道这游戏看起来有点智障,但鉴于咱还在新手村,打打低级怪练练级先!

建议

  • 基础很重要,不要做的不明不白

  • 代码亲手敲,不能假借别人之手

  • 开心很重要,不然飘飘然找周公

脚本的编辑与运行

别人是一步一个脚印,我是一步一个坑

有坑就要填,免得有人掉进去。

cmd和IDLE里带>>>这种箭头的叫做命令提示行,只能一行一行地写,回车便运行。如果要写很多行并且写写改改就很不方便。所以我们可以打开一个文件,代码全部写好后再一起运行。

编辑

不管什么编辑器都可以快捷键Ctrl+N打开新窗口编辑脚本,我见过有人盯着命令行好久不知所措。

image

Pydroid3里:

image

运行

试着把上一节的helloworld代码再写一遍,保存为hello.py文件。

IDLE里点击Run就可以直接运行,SublimeText使用快捷键Ctrl+B运行,Pydroid3点击右下角的黄色按钮。

电脑上你也可以直接双击文件夹里的hello.py运行python文件,但运行结束后黑色窗口会自动关闭,你来不及看到结果,在hello.py里的添加第二行:

input()

这样窗口就不会自动关闭。

但使用SublimeText快捷键直接运行不能使用input(),否则程序一直不会结束,直到你关闭SublimeText或者到任务管理器里关闭Python。

坑人吧,但是我对SublimeText是真爱!

基础语法

固本培元

数据类型

整型

整数类型,如:16661014651

浮点型

浮点浮的是小数点,即小数。如:0.16416666.666

字符串

由单引号或双引号括起来的文本,如:"你好"'666'"你好666"

如果引号里面有引号就要使用转义字符 \ ,如:'I\'m Tom.What\'s your name?'

注意括起字符的引号都是英文字符,如果你发现自己的字符串上出了bug,检查一下是不是用了中文字符。

布尔值

即bool值,只有两个值,TrueFalse,表示真与假。

变量赋值

试着敲出这段代码并运行

a = 666
print(a)

运行结果就是一个不知名的老铁给你扣了个666。

这里的a就是一个变量名,666就是我们给a赋的值。print的作用就是把它后面括号里的东西显示在结果上,你也可以把a赋值为字符串,看看运行结果。

但不要尝试print=666,这会改变print原本的意义(你硬要试试我也不拦你)。

还有些有它原本意义的单词你不能用做变量名,这些单词被称作Python关键字(保留字):

and as assert break class continue
def del elif else except finally
for from False gloabl if import
in is lambda nonlocal not None
or pass raise return try True
while with yield

不要去记忆上面这密密麻麻的单词!学习编程永远不是死记硬背,而是熟能生巧,上面这些关键字我们之后都会用到。

Python里的变量名是区分大小写的,print和Print是两个东西。

那么变量名还有什么限制吗?

  • 不能用数字或符号开头(除了__这个下划线)

  • 变量名不能有空格

可以用中文字符当作变量名吗?

当然可以,但想想打拼音的工作量以及冥冥之中似乎存在的某种限制,我还是建议你使用英文字符作为变量名。

类型转换

我们可以这样获得变量的类型:

a = 123
b = "123"
c = 123.456
print(type(a))
print(type(b))
print(type(c))

运行结果:

<class 'int'>
<class 'str'>
<class 'float'>

type会返回括号里数据的类型,int是整型,str是字符串,float是浮点型。

我们可以这样转换他们的类型:

a = 123.456
b = int(a)
c = str(b)
d = float(c)
print(type(b),b)
print(type(c),c)
print(type(d),d)

运行结果:

<class 'int'> 123
<class 'str'> 123
<class 'float'> 123.0

输出输入

输出

print后面的括号里可以放任何数据类型,只要你想知道某个东西是啥,print就行了。

如果要同时print多个东西呢:

print("数:",456,123.456)

可以加无数个逗号把要print的东西串成一行。想用一个print又不想串成一行:

print("数:\n",456,123.456)

使用换行符添加换行。

往字符串里插入数据:

a = "数:%d、%f"%(456,123.456)
print(a)

运行结果:

数:456、123.456000

使用%d这种格式化符号把后面括号的相应类型的数据依次插入到字符串中。

部分格式化符号:

%s %d %f %e
格式化字符串 格式化整数 格式化浮点数 用科学计数法格式化浮点数

输入

使用input()输入:

a = input("输入:")
print(a)

input("输入:")括号里的字符串作为提示信息,也可以不写。

运行代码后input会等待你的输入,当你按下回车后,它把你的输入作为一个字符串赋值给a。

数学运算

用python进行一些数学运算非常简单:

print(1+2-3*4/5)
+ - * / ** % //
除法求余 除法取整数

试试上面的运算符,你会发现python是个不错的计算器。

试试下面这个,看看结果是否与你想的一样。

print(5//2)
print(-5//2)

运行结果:

2
-3

这种取整称作向上取整。

条件语句

if-else语句表示如果-否则

a = 666
if a>555:
    print("好大!")
else:
    print("好小")

Python使用缩进来控制语句块的从属关系,比如print("好大!")属于它上面的ifprint("好小")属于其上面的else。当if后面的条件满足时,便执行属于它的语句块。

if-elif-else语句表示如果-不然如果-否则。elif,表示else if,即不然如果:

a = "dog"
if a=="cat":
    print("这是猫")
elif a=="rabbit":
    print("这是兔子")
elif a=="dog":
    print("这是狗")
else:
    print("不知道这是啥。")
这是狗

你可能注意到了这里有两个等于号,Python单个等于号表示赋值,两个等于号表示比较

print(1==2)

结果是个布尔值:False。实际上每个条件判断都会返回一个布尔值

条件运算符:

== != > < >= <=
等于 不等于 大于 小于 大于等于 小于等于

使用notandor关键字表示非、与、或关系:

print(True and False) 
print(True or False)  
print(not True)
False
True
False

如果没有接触过其他编程语言这里可能会难以理解。

总的来说:

  • and两边都为真时,结果为真

  • or两边只要有一个为真,结果就为真

  • not使真变假,假变真

循环语句

衔尾蛇

while循环

a = 0
while a<4:
    a = a+1
    print(a)
print("结束")

输出结果:

1
2
3
4
结束

如果while后的条件判断为真(True),就执行属于它的语句块,执行完后再次重复刚才的判断,直到为假(False)就停止循环,执行循环外的代码。

其中语句a=a+1有更简单的写法:a+=1,两者效果一样。

类似的还有-=*=/=//=**=%=

使用break跳出循环:
a = 0
while a<4:
    a += 1
    if a==2:
        break
    print(a)
print("结束")

运行结果:

1
结束

使用continue跳过循环:

a = 0
while a<4:
    a += 1
    if a==2:
        continue
    print(a)
print("结束")

运行结果:

1
3
4
结束

实现游戏

闭门造车,出门合辙

还记得开头说的手指抽筋模拟器吗?你已经有了创造这个游戏的所有知识(如果你认真看了上面并试了的话)。我会在下面给出需求、代码和解释。

需求

  • 按下回车后显示当前已经按了几下

代码

#手指抽筋模拟器基础语法版.py
num = 0
print("你点我啊!")
while True:
    input()
    num += 1
    print("啊啊啊~",num)

请自行忽略其中的魔性字符串。

第一行:#井号后面包括井号为注释,python不会管注释,你尽可以在里面写些小秘密。

第二行:创建了一个变量num,并赋值为0

第四行:while后面是判断语句,前面说过所有判断语句都会返回一个布尔值,所以我们也可以直接写一个布尔值。这里的True,会使while循环永不停止(除非你关闭窗口)。

第五行:input()会等待你按下回车键再执行下面的代码,所以不用担心无限循环的while会搞坏你的CPU。

第六行:num增加1。


耐心的敲完上面的代码,玩一玩(尽管这没什么好玩的),你会发现这回有一个游戏bug:只要一直按着回车键就可以了。之后我们会做更多的游戏,顺便升级这个智障的手指抽筋模拟器。

练习

需求

  • 产生一定范围内的一个随机整数

  • 玩家输入猜测的数,提示大了还是小了,玩家再次猜测,直到猜对

  • 猜对后返回猜测次数。

提示代码

import random
num = random.randint(1,1000)
print(num)

第一行:import导入后面的库,这里导入了random

第二行:random.randint(a,b)的效果是产生a、b之间随机的一个整数。

第三行:print出来看看。

分析

  • 使用上面的提示代码产生一个随机整数

  • 进入循环,使用input等待玩家输入,并将输入转化为整型

  • 判断输入大小,print提示信息,判断是否猜对、结束循环


试一试,写写看。练习的示例代码会在下一节给出。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容