首先声明,我用的系统是 ubuntu20.04,已经自带了python环境。
这篇博客是针对有C语言基础的同胞们,所以对C语言不了解的伙计不建议“食用”。
ubuntu可以打开终端用python3 --version
看看配置好的python版本。拿我自己的电脑举例,我的是python3.8.5
。
然后我用的编译器是pycharm
。
只需要一个输出函数就足矣。
print("hello world!")
既然讲到了输出函数,这里稍微展开一下。python
中的输出函数是自带换行的,也就是相当于自带C语言中的printf("\n")
,那么就有人要问了,如果我不想换行怎么办?
你可以这样:
print("hello","world") #这样中间加","会让"hello"和"world"中间加上空格
print("hello", end=" ") #这里的"end"其实就相当于末尾的转义字符,默认是"\n"
print("world", end="") #这也是为什么默认会换行,可以将其改为任何你想要的,例如为空格或为空
这是一个简单的随机摇号小程序。这个会便于我们理解python的基础语法结构。
import random #引入模块
import string
count = 0 #定义变量,不需要指明变量类型
while count < 3:
_choice = []
for i in range(20):
n1 = "-".join(random.sample(string.ascii_uppercase, 3))+"-"
n2 = "".join(random.sample(string.digits, 3))
_choice.append(n1+n2)
print(n1+n2)
choice = input("请输入你喜欢的号码:(如果没有喜欢的号码请输入 # )").strip()
if choice in _choice:
exit(f"恭喜你选择了新的号码:{choice}")
elif choice == '#':
print("请重新选择:")
else:
print("你输入的号码不合法,请重新选择:")
count += 1
import
,这个是用来引入模块的,里边包含了很多函数,可以供你使用,例如这个random
就是随机数,string
就是字符串——你也可以暂时形象地理解为C语言中的头文件。;
,这一开始让我很不习惯,但对于很多刚接触编程的小白来说却很方便。{}
来 “划分” 代码的结构,而是直截了当地使用了缩进,你可以直接使用TAB表示 “往里一层” ,这样就能代替{}
的作用,同时也能让代码看上去更美观——这一点我还是蛮喜欢的。while
循环和C语言中的差别不大,但是for
循环就不同。拿上边的for i in range(20):
举例,这个定义的i
就相当于range(20)
中的每个元素,也就是0-19
依次遍历。这个例子不太好理解,可以参考下边这一段:a = [11, 25, 31, 44, 56, 69, 78, 82]
for i in a:
print(i) #输出"a"中的每个元素值
“”
或者''
都可以,只要保证开头结尾用的一致就好。同时关于字符串的函数,上边示例用到的"-".join()
是将()
中的列表(你可以暂时理解为C语言中的数组)元素一一用-
拼接起来成为一个新的字符串。+ *
等很方便的操作。+
自然就是字符串的拼接,例如示例n1+n2
。而*
就是将字符串复制,例如"Hi"*4
就是"HiHiHiHi"
。f
,再在字符串中加入你想输出的{变量}
,如同示例中的f"恭喜你选择了新的号码:{choice}"
,就可以直接在字符串中替换成这一变量的值。a = "asdasdasd"
print(type(a))
print(a.count("a")) # 记录字符串中"a"有多少个
print(a.count("a", 0, 5)) # 记录从位置0-5有多少个"a"
print(a.endswith("wa")) # 判断字符串是否以“wa”结尾
print(a.find("但")) # 找到字符串中"但"的索引,找不到会返回-1
print(a.find("a"))
print(a.isdigit()) # 判断是否是数字
print("-".join(['a', 's', 'd', 'a', 'b'])) # 拼接字符串,注意后边一定要是一个列表
a = a.replace("s", "M") # 替换字符串里的字符,注意要要重新赋值
print(a)
a = a.replace("M", "m", 1) # 这个就是只替换一个罢了
print(a)
print(a.startswith("a"))
a = " " + a + " "
print(a)
a = a.strip() # 以上以下都只是函数,并不会改变其本身的值,如果要改变的话记得重新赋值
print(a) # 上边这一个指令是忽略空格
print(a.split("a", 3)) # 将字符串变为列表的形式,“a”表示以什么为标志分,3表示分几次,注意这里以"a"开头,那么此时会分出一个空格出来,同理,如果你以“a”结尾,那结尾会分出一个空格
# 如果分割次数过大,超出的部分没用
input()
这个括号里可以加上你同时需要打印的值,就不需要像C语言当中先printf
再scanf
,直接一步到位。in
,这条指令能很方便地判断一个元素是否在另一个列表(当然不止列表)中,如示例中的if choice in _choice:
,返回值自然也是True
和False
,不过值得一提的是,python中的True,False
开头需要大写。elif
,等同于C语言中的else if
。and
和or
以及not
(not
还可以和in
连用,如not in
),至于各自是什么意思,相信学过小学英语的应该都知道了。列表很大程度上类似于C语言中的数组,以下是一些常用的列表操作,有兴趣的同胞们可以在编译器里试试看看效果。
a = ['Alex', 'Jack', 'John', 'Tim']
a.append('Coke') # 在列表末尾添加元素
a.insert(1, 'Max') # 在1位置插入一个元素
b = ['阿斯顿', '狗蛋', '就这']
a.extend(b) # 将a接上b
print(a)
a.insert(1, [1, 2, 3]) # 没错,list里面可以放任何数据,并不一定要求一致
print(a)
print(a[1][1])
del a[1] # 删除操作
print(a)
print(a.pop()) # 删除list中最后一个值并返回
print(a)
print(a.pop(-2)) # 也可以指定,其中-2表示倒着数第2个
if '狗蛋' in a:
print(a.index('狗蛋')) # 找到'狗蛋',取索引,前提是存在,所以一般用in先判断是否存在
print(a.count('狗蛋')) # 找到'狗蛋'的数量
else:
print("查找内容不在列表内")
print(a[0:4]) # 切片,返回从0-3(不包括4)的值
print(a[:4])
print(a[4:]) # 倒着写也可以
print(a[-3:])
print(a[0::2]) # 跳着切,最后的2表示步长,不输默认为1
a.clear() # 清空
print(a)
n = [2, 3, 5, 23, 78, 1, 42, 99, 101, 14]
n.sort() # 从小到大排序
print(n)
n.reverse() # 反转
print(n)
for i in n: # 循环列表
print(i)
for i in enumerate(n): # 循环列表的同时打印对应的索引,这里enumerate(n)相当于关于n的一个列表,其中每个元素包括n中每个元素的索引和值。也就是说其实我们每次打印的是一个列表
print(i)
for i in enumerate(n): # 循环列表,带索引,这样可以把表示列表的括号去掉,好看一些
print(i[0], i[1])
因为和C语言比较类似,只要在编译器里运行一遍看看效果就很好理解,所以这里就不详细展开了。
这里举个例子,一个公司里有很多人,我现在想要查看某一个人的工资。
如果是C语言,我们是不是要把整个数组遍历一遍?这样会浪费很多时间。因此就要引入一个新的东西——字典。
字典中会有key
和对应的值value
,而我们可以根据key
来查找对应的value
,这样搜索会比遍历一遍列表快得多。
info ={
"Alex": [46, '老板', 180000],
"Tim": [32, '部门主管', 30000],
"Jack": [28, "打工仔", 10000]
}
print("Alex" in info)
print(info["Tim"]) # key 必须唯一
for i in range(3):
print(info["Tim"][i], end=" ") # 把列表的括号去掉,显得美观
print()
info["Tim"] = 1 # 对应的值可以随意改变
print(info["Tim"])
学习一门新的语言,可以拿之前学过的语言去进行对比学习(也要注意,别记混了),这样可以快速理解新语言的一些特性,以及两种语言各自优缺点。还有就是一定要实践,学着编几个小程序熟悉基本语法,多动手实践,光靠看文档,看视频,不动手是学不熟练的。