100分钟掌握Python的基础知识

2022-05-03 00:00:00 python 基础知识

在控制台输出Hello World

print('Hello World')

变量


# 变量用于临时存储可能发生变化的数据
# 单一的等号是赋值运算符
age = 26
first_name = 'Shivika'
gpa = 3.99
# 在这里我们可以看到三个不同类型的数据存储在变量中:一个整数、一个字符串和一个浮点数。
# 你不需要声明存储在每个变量中的数据类型。Python 为你做了这些。
# 你可以使用type()函数查看变量中的数据类型
print(type(age))
print(type(first_name))
print(type(gpa))
# 变量是 "动态类型的"--Python在运行时检查类型。
age = 26.2
print(type(age))
print(age, type(age))
# 变量命名的提示。
# 命名可以有字母、数字和下划线,但不能以数字开头
# 一些Python保留字不能使用
# 使用描述性的变量名
# 大小写事项
# 常数用大写字母。PI = 3.14159
# 每一个Python变量都是一个指针,指向存储在内存某处的数据
# 使用id()函数获得一个变量的内存位置
print(id(age))
# 交换变量
x = 5
y = 10
x, y = y, x
print('x =', x, 'y =', y)

bool类型 - True or False


# 这些都是False:0, 0.0, [], "", None
# 这些都是True:任何非零的数字,任何非空的字符串、列表或集合
print(bool(1))    # True
print(bool('dog'))
print(bool(10.78))
print(bool(0 or 1))
print(bool(0))    # False
print(bool(''))
print(bool(0 and 1))

数学函数

# 内置的算术函数有:加、减、乘、除、幂、整数除和模(又名:模或余数)。
# + 加法
# - 减法
# * 乘法
# / 除法
# // 整数除法
# % 模数(除法余数)
# ** 幂
x = 5 + 7
print(x, type(x))
x = 5 - 7
print(x, type(x))
x = 7 / 4
print(x, type(x))
x = 7 // 4
print(x, type(x))
x = 7 % 4
print(x)
x = 4 ** 3
print(x)
# x += 5 is the same as saying x = x + 5
x = 2
x = x + 5
print(x)
x = 2
x += 5
print(x)
# Order of Operations
#   1. ( )
#   2. **
#   3. * / // %
#   4. + -
#   Example: 1 + 5 ** (3 // 2) - 6 % 4 => 4
x = 1 + 5 ** (3 // 2) - 6 % 4
print(x)

控制台输入

# 从键盘上获取用户在命令提示符下的输入信息
name = input('What is your name? ')
print("Hello,", name)
age = eval(input('How old are you? '))
print('Age =', age, type(age))
# 用我们目前所知道的,我们可以写一个程序来获取用户的输入并计算三角形的面积。
base = eval(input('Enter the base: '))
height = eval(input('Enter the height: '))
area = base * height / 2
print ('Area = ', area)

注释

# 单行注释的标签
'''
三组引号 
用于多行注释
'''
""" double quotes work too """

IF-ELIF-ELSE 语句

# 条件语句需要bool表达式
x = 69
print(x > 50)
print(x == 50)
print(x != 50)
my_age = 19
print(my_age > 21)
if my_age >= 21:
    print("Old enough.")
else:
    print("Not old enough.")
    print("Maybe next year.")
score = 72
if score > 90:
    print('Grade: A')
elif score > 80:
    print('Grade: B')
elif score > 70:
    print('Grade: C')
elif score > 60:
    print('Grade: D')
else:
    print('Grade: F')
# 在一个if中可以有多个条件,使用and/or
my_age = 19
grade = 'C'
if my_age > 18 and grade == 'A':
    print('I can go to the party!')
# 嵌套的if语句 -- 两个条件都必须为 "True"
my_age = 19
grade = 'C'
if my_age > 18:
    if grade == 'A':
        print('I can go to the party!')
# if ternary
x = 10
y = 20
#  action/ if condition true/ else condfition false
z = x + y if x > y else y - x
print(z)
# result 10

字符串

# 一个字符串是一串字符(即文本)
s = 'Howdy'
print(s)
print(len(s))
print(s[3])
print(s[1:3])
t = ' dude! '
s += t
print(s + '|')
print(s.strip() + '|')
s = s.rstrip('! ')
print(s)
s = 'Howdy dude!'
print(s.lower())
print(s.upper()[:5])
print(s.title())
print(s.replace('Howdy', 'Greetings'))
print(s)
print(s.count('d'))
print(s.find('w'))
print('dud' in s)
print('X' not in s)
print(s.startswith('How'))
print(s.endswith('cat'))
print(s > 'Honk')
print(s.isalpha())
print(s[0:4].isalpha())
print(s.isnumeric())
print(s.split())
print('5,7,9'.split(','))
print('73.294'.split('.'))
print(s[0], '\t', s[1], '\t', s[2])
print(s[:s.find(' ')] + '\n' + s[s.find(' ')+1:])

For 、while 循环

# 用于遍历一个字符串或列表的项目
# 缩进是很重要的。
# 每个从for缩进的语句都将在每次迭代中被执行
s = 'Raj'
for letter in s:
    print(letter)
for letter in s:
    print(letter, end='')
print()
# if 在一个for循环内,缩进是很重要的。
for pig in s:
    if pig != 'a':
        print(pig, end='')
print()
for i in range(len(s)):
    print(i, end='')
print()
for i in range(len(s)):
    print(s[i])
for i in range(len(s)-1, -1, -1):
    print(s[i])
print(s[::-1])
# while 循环是for 循环的一种替代方法
# 它们在每个迭代中检查一个布尔值,当布尔值为假时退出循环
x = 2
while x < 5:
    print('ha')
    x += 1

数据结构

# 这些函数都适用于String、List和Tuple
# 索引 -- 使用其索引访问序列中的任何项目
x = 'frog'
print (x[3])            # prints 'g'
x = ['pig', 'cow', 'horse']
print (x[1])            # prints 'cow'
# 切片 -- 使用索引切出子字符串、子列表、子元组
# [start : end+1 : step]
x = 'computer'
print(x[1:4])           # items 1 to 3, 'omp'
print(x[1:6:2])         # items 1, 3, 5, 'opt'
print(x[3:])            # items 3 to end, 'puter'
print(x[:5])            # items 0 to 4, 'compu'
print(x[-1])            # last item, 'r'
print(x[-3:])           # last 3 items, 'ter'
print(x[:-2])           # all except last 2 items, 'comput'
# 添加/串联 -- 使用+合并2个相同类型的序列。
x = 'horse' + 'shoe'
print (x)               # prints 'horseshoe'    
x = ['pig', 'cow'] + ['horse']
print (x)               # prints ['pig', 'cow', 'horse']
# 乘法 -- 使用*对一个序列进行乘法。
x = 'bug' * 3
print (x)               # prints 'bugbugbug'
x = [8, 5] * 3
print (x)               # prints [8, 5, 8, 5, 8, 5]
# 检查成员 -- 测试一个项目是否在一个序列中
x = 'bug'
print ('u' in x)        # prints True
x = ['pig', 'cow', 'horse']
print ('cow' not in x)  # prints False
# 迭代 -- 迭代一个序列中的项目
x = [7, 8, 3]
for item in x:
    print (item * 2)    # prints 14, 16, 6
x = [7, 8, 3]
for index, item in enumerate(x):
    print (index, item) # prints 0 7, 1 8, 2 3
# 长度 -- 计算一个序列中的项目数
x = 'bug'
print (len(x))          # prints 3
x = ['pig', 'cow', 'horse']
print (len(x))          # prints 3
# Minimum -- 在一个序列中按字母顺序找到最小项
# 字母或数字类型,但不能混合类型
x = 'bug'
print (min(x))          # prints 'b' 
x = ['pig', 'cow', 'horse']
print (min(x))          # prints 'cow'
# Maximum -- find the maximum item in a sequence
# alpha or numeric types, but cannot mix types
x = 'bug'
print (max(x))          # prints 'u' 
x = ['pig', 'cow', 'horse']
print (max(x))          # prints 'pig'
# Sum -- find the sum of items in a sequence
# entire sequence must be numeric type
x = [5, 7, 'bug']
print (sum(x))          # error!
x = [2, 5, 8, 12]
print (sum(x))          # prints 27
print (sum(x[-2:]))     # prints 20 
# 排序 -- 返回一个排序后的新项目列表
# 排序后不会改变原始列表
x = 'bug'
print (sorted(x))       # prints ['b', 'g', 'u']
x = ['pig', 'cow', 'horse']
print (sorted(x))       # prints ['cow', 'horse', 'pig']
# count (item)  
# 返回一个项目的计数
x = 'hippo'
print (x.count('p'))    # prints 2
x = ['pig', 'cow', 'horse', 'cow']
print (x.count('cow'))  # prints 2
# index (item)  
# 返回一个项目的第一次出现的索引
x = 'hippo'
print (x.index('p'))    # prints 2
x = ['pig', 'cow', 'horse', 'cow']
print (x.index('cow'))  # prints 1
# 解包 - 将一个序列的n个项目解包为n个变量
x = ['pig', 'cow', 'horse']
a, b, c = x             # now a is 'pig', b is 'cow', c is 'horse'

列表

# 创建一个新列表
x = list((1, 2, 3))     # note double parens
x = ['a', 25, 'dog', 8.43]
x = list(tuple1)
# 使用解析法创建列表
x = [m for m in range(8)]
# resulting list: [0, 1, 2, 3, 4, 5, 6, 7]
x = [z**2 for z in range(10) if z>4]
# resulting list: [25, 36, 49, 64, 81]
# 删除 -- 删除一个列表或列表中的一个项目
x = [5, 3, 8, 6]
del(x[1])               # [5, 8, 6]
del(x)                  # deletes list x
# Append -- 将一个项目追加到列表中
x = [5, 3, 8, 6]
x.append(7)             # [5, 3, 8, 6, 7]
# 延伸 -- 将一个序列追加到一个列表上
x = [5, 3, 8, 6]
y = [12, 13]
x.extend(y)             # [5, 3, 8, 6, 7, 12, 13]
# Insert -- 在给定的索引处插入一个项目。 x.insert(index, item)
x = [5, 3, 8, 6]
x.insert(1, 7)          # [5, 7, 3, 8, 6]
x.insert(1,['a','m'])   # [5, ['a', 'm'], 7, 3, 8, 6] 
# Pop -- 从列表中弹出最后一个项目,并返回项目
x = [5, 3, 8, 6]
x.pop()                 # [5, 3, 8]. and returns the 6
print(x.pop())          # [5, 3]. and prints 8 
# 移除 -- 移除一个项目的第一个实例
x = [5, 3, 8, 6, 3]
x.remove(3)             # [5, 8, 6, 3]
# 反转 -- 反转列表的顺序
x = [5, 3, 8, 6]
x.reverse()             # [6, 8, 3, 5]
# 排序 -- 将列表排序到位
# sorted(x) 返回一个新的排序的列表,而不改变原来的列表 x。
# x.sort() 将x的项目按排序顺序排列(原地排序)。
x = [5, 3, 8, 6]
x.sort()                # [3, 5, 6, 8]
# 清除 -- 删除列表中的所有项目
x = [5, 3, 8, 6]
x.clear()               # []

元组

# 构造函数 - 创建一个新元组
x = ()                  # no-item tuple
x = (1,2,3)
x = 1, 2, 3             # parenthesis are optional
x = 2,                  # single-item tuple
list1 = [5, 7, 7]
x = tuple(list1)        # tuple from list
# 元组是不可变的,但成员对象可能是可变的
x = (1, 2, 3)
del(x[1])               # error!
x[1] = 8                # error!
x = ([1,2], 3)          # 2-item tuple: list and int
del(x[0][1])            # ([1], 3)
# 集合
# ------------------------------------------------
# 构造函数 - 创建一个新的集合
x = {3,5,3,5}           # {5, 3}
x = set()               # empty set
list1 = [5, 7, 7]
x = set(list1)          # new set from list. strips duplicates, {5, 7}
# Set Comprehension
x = {3*x for x in range(10) if x>5} 
#产生的集合。{18, 21, 24, 27}但顺序是随机的

字典

# 构造函数 - 创建一个新的dict
x = {'pork':25.3, 'beef':33.8, 'chicken':22.7}
x = dict([('pork', 25.3),('beef', 33.8),('chicken', 22.7)])
x = dict(pork=25.3, beef=33.8, chicken=22.7)
# 访问dict中的键和值
x.keys()                # returns list of keys in x
x.values()              # returns list of values in x
x.items()               # returns list of key-value tuple pairs in x
item in x.values()      # tests membership in x, returns boolean
# 迭代一个Dict
for key in x:           # iterate keys
    print(key, x[key])  # print all key/value pairs
for k, v in x.items():  # iterate key/value pairs
    print(k, v)         # print all key/value pairs

函数

# 使用 def 关键字来创建一个函数
# 给函数一个名字,后面加括号和冒号
# 你可以传入0个或多个变量,这里我们传入num。
# 你可以返回0个或多个变量,这里我们返回num的立方体。
# 缩进是很重要的。
def cuber(num):
    num_cubed = num * num * num
    return num_cubed
# to call the function, and pass in 5:
cuber(5)
# but if you want to assign the return value (125) to a variable,
x = 5
x_cubed = cuber(x)
print(x, x_cubed)
# you can set default values for parameters
def cuber(num = 2):
    num_cubed = num * num * num
    return num_cubed
print(cuber())      # uses the default 2
print(cuber(3))     # 3 overrides the default
# you can pass in multiple values, and return multiple values
# but order is important
def solve_triangle(base, height, side1, side2, side3):
    area = base * height / 2
    perimeter = side1 + side2 + side3
    return area, perimeter
area, perim = solve_triangle(3, 4, 5, 3, 4) # b=3, h=4, s1=5, s2=3, s3=4
print('Area:', area, ' Perimeter:', perim)
# 以上都被称为 "位置参数",而且顺序很重要
# 你也可以在调用一个函数时传递 "关键字参数"。
a, p = solve_triangle(side1=5, side2=3, side3=4, height=4, base=3)
print(a, p)
# 或者使用两者的组合,但位置参数必须放在前面
a, p = solve_triangle(3, 4, side3=4, side2=3, side1=5)
print(a, p)

类和对象

# 使用类来模拟现实世界的事物。
# 把相关的数据(变量)和动作(函数)放在一个代码块中。
class Circle:
    # Circle constructor -- __init__ method creates a new Circle object
    def __init__(self, r = 1):
        self.radius = r
    def getPerimeter(self):
        return 2 * self.radius * 3.14
    def getArea(self):
        return self.radius ** 2 * 3.14
# 所有的方法都有self参数,它是Python对调用该方法的对象的引用。
# 这将调用 __init__ 方法,它将创建新的 Circle
circle1 = Circle(3)     
# 你可以使用点运算符访问圆的属性和方法
print("Radius =", circle1.radius)
print("Perimeter =", circle1.getPerimeter())

import语句

# Python 有许多已经写好的类,你可以使用它们
# 要访问另一个类中的方法和数据,你必须导入它
import math
print(math.pi)
import random
print(random.randint(1,5))
# 更短的版本,用as来缩写模块的名称
import math as m
print(m.pi)
import random as rd
print(rd.randint(1,5))
# 只导入一两个函数或常量,而不是整个模块
# 更容易编码,但需要注意名称不冲突
from math import pi
print(pi)
from random import randint, shuffle
print(randint(1,5))
x = ['a', 'b', 'c']
shuffle(x)
print(x)
# 如果你愿意,可以重命名一个导入的函数
x = ['a', 'b', 'c']
from random import shuffle as sf
sf(x)
print(x)
#也可以用*导入整个模块
from random import *
print(randint(1,5))

文件读写

filename = 'city_data.txt'
# 这将打开一个名为fin的文件句柄,遍历文件的每一行,并打印每一行
with open(filename) as fin:
    for line in fin:
        print(line)
# 我们可以通过使用split从一行中抓取单词,它将每一行变成一个叫做row的列表
with open(filename) as fin:
    fin.readline()
    for line in fin:
        row = line.split(',')
        print('Country:', row[1], ' City:', row[2])
# 使用w参数写入一个输出文件
with open('Cities.txt', 'w') as fout:
    with open(filename) as fin:
        fin.readline()
        for line in fin:
            row = line.split(',')
            fout.write(row[2] + '\n')

相关文章