Python基本语法

Python基本语法

课程大纲:

  • 变量
  • 运算符
  • 分支与循环
  • 模块与包

一、变量

  1. 变量定义
  • 在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 才会被创建
  • 等号(=)用来给变量赋值
  • = 左边是一个变量名
  • = 右边是存储在变量中的值
变量名 = 值
  • 案例1 学生注册
# 定义变量---学生学号
studentNo = "9527"

# 定义变量---学生密码
stuentPassword = "123"

# 在程序中,如果要输出变量的内容,需要使用 print 函数
print(studentNo)
print(stuentPassword)

说明#是代码注释,快捷键是Ctrl+/

  • 案例2 超市买菜
    需求
    1)柿子的价格是 8.5 元/斤
    2)买了 7.5 斤 柿子
    3)计算付款金额
# 定义柿子价格变量
price = 8.5

# 定义购买重量
weight = 7.5

# 计算金额
money = price * weight

print(money)
  1. 变量类型
    变量的四要素:
  • 变量的名称
  • 变量保存的数据
  • 变量存储数据的类型
  • 变量的内存地址(标识)

2.1. 变量类型的演练

  • 需求
    定义变量保存小强的个人信息
    姓名:小强
    年龄:22 岁
    性别:是男生
    身高:1.80 米
    体重:77.0 公斤
  • 提问
    在演练中,一共有几种数据类型?
    在 Python 中定义变量时需要指定类型吗?

2.2 变量的类型

  • 在 Python 中定义变量是 不需要指定类型(在其他很多高级语言中都需要)
  • 数据类型可以分为 数字型 和 非数字型
    数字型
    整型 (int)
    浮点型(float)
    布尔型(bool)
    真 True 非 0 数 —— 非零即真
    假 False 0
    非数字型
    字符串
    列表
    元组
    字典
  • 使用 type 函数可以查看一个变量的类型
type(name)

2.3 不同类型变量之间的计算

  • 数字型变量 之间可以直接计算
    在 Python 中,两个数字型变量是可以直接进行 算数运算的
    如果变量是 bool 型,在计算时
    True 对应的数字是 1
    False 对应的数字是 0
    演练步骤
    1)定义整数 i = 10
    2)定义浮点数 f = 10.5
    3)定义布尔型 b = True
i = 10
f = 10.5
b = True

print(i+f+b)
21.5

发生了自动类型转换,全部转换成了浮点数。

  • 字符串变量 之间使用 + 拼接字符串
    在 Python 中,字符串之间可以使用 + 拼接生成新的字符串
first_name = "三"
last_name = "张"
print(first_name + last_name)
  • 字符串变量 可以和 整数 使用 * 重复拼接相同的字符串
print("-" * 50)

输出

'--------------------------------------------------'
  • 数字型变量 和 字符串 之间 不能进行其他计算
first_name = "zhang"
x = 10

print( x + first_name)
---------------------------------------------------------------------------
TypeError: unsupported operand type(s) for +: 'int' and 'str'
类型错误:`+` 不支持的操作类型:`int` 和 `str`

解决办法:使用str(x)将x的类型强制转换成字符串类型

first_name = "zhang"
x = 10
print(str(x)+first_name)

2.4 变量的输入
所谓 输入,就是 用代码 获取 用户通过 键盘 输入的信息
例如:去银行取钱,在 ATM 上输入密码在 Python 中,如果要获取用户在 键盘 上的输入信息,需要使用到 input 函数

  • 在 Python 中可以使用 input 函数从键盘等待用户的输入
  • 用户输入的 任何内容 Python 都认为是一个 字符串
  • 语法如下
字符串变量 = input("提示信息:")

2.5 变量输入演练 —— 超市买苹果
需求

  • 收银员输入 苹果的价格,单位:元/斤
    收银员输入 用户购买苹果的重量,单位:斤
    计算并且 输出 付款金额
  • 代码
# 1. 输入苹果单价
price_str = input("请输入苹果价格:")

# 2. 要求苹果重量
weight_str = input("请输入苹果重量:")

# 3. 计算金额
# 1> 将苹果单价转换成小数
price = float(price_str)

# 2> 将苹果重量转换成小数
weight = float(weight_str)

# 3> 计算付款金额
money = price * weight

print(money)

2.6 变量的格式化输出
使用%

苹果单价 9.00 元/斤,购买了 5.00 斤,需要支付 45.00 元

  • 在 Python 中可以使用 print 函数将信息输出到控制台
  • 如果希望输出文字信息的同时,一起输出 数据,就需要使用到 格式化操作符
    % 被称为 格式化操作符,专门用于处理字符串中的格式
    包含 % 的字符串,被称为 格式化字符串
  • % 和不同的 字符 连用,不同类型的数据 需要使用 不同的格式化字符
  1. %s 字符串
  2. %d 有符号十进制整数,%06d 表示输出的整数显示位数,不足的地方使用 0 补全
  3. %f 浮点数,%.2f 表示小数点后只显示两位
  4. %% 输出 %
  • 语法格式如下:
print("格式化字符串" % 变量1)

print("格式化字符串" % (变量1, 变量2...))

举个栗子
需求

  • 定义字符串变量 name,输出 我的名字叫 小明,请多多关照!
  • 定义整数变量 student_no,输出 我的学号是 000001
  • 定义小数 price、weight、money,输出 苹果单价 9.00 元/斤,购买了 5.00 斤,需要支付 45.00 元
  • 定义一个小数 scale,输出 数据比例是 10.00%
print("我的名字叫 %s,请多多关照!" % name)
print("我的学号是 %06d" % student_no)
print("苹果单价 %.02f 元/斤,购买 %.02f 斤,需要支付 %.02f 元" % (price, weight, money))
print("数据比例是 %.02f%%" % (scale * 100))
  1. 变量命名
    标识符

标识符就是程序员自己命名的 变量名。 名字 需要有 见名知义 的效果,不要随意起名。

  • 标示符可以由 字母、下划线 和 数字 组成
  • 不能以数字开头
  • 不能与关键字重名
    关键字
    关键字 就是在 Python 内部已经使用的标识符
    关键字 具有特殊的功能和含义
    开发者 不允许定义和关键字相同的名字的标示符
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue',
 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 
'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise',
 'return', 'try', 'while', 'with', 'yield']

二、运算符

1)算数运算符

  • 是完成基本的算术运算使用的符号,用来处理四则运算
运算符 描述 实例
+ 10 + 20 = 30
- 10 - 20 = -10
* 10 * 20 = 200
/ 10 / 20 = 0.5
// 取整除 返回除法的整数部分(商) 9 // 2 输出结果 4
% 取余数 返回除法的余数 9 % 2 = 1
** 又称次方、乘方,2 ** 3 = 8
>>> a=10
>>> b=5
>>> print(a+b)
15
>>> print(a-b)
5
>>> print(a*b)
50
>>> print(a/b)
2.0
>>> print(a**b)
100000
>>> print(a//b)
2
>>> print(a%b)
0

2)比较(关系)运算符

运算符 描述
== 检查两个操作数的值是否 相等,如果是,则条件成立,返回 True
!= 检查两个操作数的值是否 不相等,如果是,则条件成立,返回 True
> 检查左操作数的值是否 大于 右操作数的值,如果是,则条件成立,返回 True
< 检查左操作数的值是否 小于 右操作数的值,如果是,则条件成立,返回 True
>= 检查左操作数的值是否 大于或等于 右操作数的值,如果是,则条件成立,返回 True
<= 检查左操作数的值是否 小于或等于 右操作数的值,如果是,则条件成立,返回 True
>>> a=10
>>> b=20
>>> a==b
False
>>> a!=b
True
>>> a>b
False
>>> a<b
True
>>> a>=b
False
>>> a<=b
True

3)逻辑运算符

运算符 逻辑表达式 描述
and x and y 只有 x 和 y 的值都为 True,才会返回 True否则只要 x 或者 y 有一个值为 False,就返回 False
or x or y 只要 x 或者 y 有一个值为 True,就返回 True;只有 x 和 y 的值都为 False,才会返回 False
not not x 如果 x 为 True,返回 False;如果 x 为 False,返回 True
>>> a=True
>>> b=False
>>> a and b
False
>>> a or b
True
>>> not a
False
>>> not -1
False
>>> not 0
True

4)赋值运算符

  • 在 Python 中,使用 = 可以给变量赋值
  • 在算术运算时,为了简化代码的编写,Python 还提供了一系列的 与 算术运算符 对应的 赋值运算符
  • 注意:赋值运算符中间不能使用空格
运算符 描述 实例
= 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
+= 加法赋值运算符 c += a 等效于 c = c + a
-= 减法赋值运算符 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c = a 等效于 c = c a
/= 除法赋值运算符 c /= a 等效于 c = c / a
//= 取整除赋值运算符 c //= a 等效于 c = c // a
%= 取 模 (余数)赋值运算符 c %= a 等效于 c = c % a
**= 幂赋值运算符 c = a 等效于 c = c a
>>> a=10
>>> b=20
>>> c=0
>>> c=a+b
>>> print(c)
30
>>> c+=10
>>> print(c)
40
>>> c-=a
>>> print(c)
30
>>> c*=a
>>> print(c)
300
>>> c/=a
>>> print(c)
30.0
>>> c%=a
>>> print(c)
0.0
>>> c=a**5
>>> print(c)
100000
>>> c//=b
>>> print(c)
5000
>>> print(b)
20

5)运算符的优先级

  • 以下表格的算数优先级由高到最低顺序排列
运算符 描述
** 幂 (最高优先级)
* / % // 乘、除、取余数、取整除
+ - 加法、减法
<= < > >= 比较运算符
== != 等于运算符
= %= /= //= -= += = *= 赋值运算符
not or and 逻辑运算符

三、分支与循环

条件语句

Python 条件语句跟其他语言基本一致的,都是通过一条或多条语句的执行结果( True 或者 False )来决定执行的代码块。
Python 程序语言指定任何非 0 和非空(None)值为 True,0 或者 None为 False。

  • if-语句的基本形式
    Python 中,if 语句的基本形式如下:
if 判断条件:
    执行语句……
else:
    执行语句……

Python 语言有着严格的缩进要求,因此这里也需要注意缩进,也不要少写了冒号 : 。

if 语句的判断条件可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系。

例如:

results=59

if results>=60:
    print ('及格')
else :
    print ('不及格')

输出结果:

不及格

上面也说道,非零数值、非空字符串、非空 list 等,判断为True,否则为False。因此也可以这样写:

num = 6
if num :
    print('Hello Python')
  • if-语句多个判断条件的形式
    有些时候,我们的判断语句不可能只有两个,有些时候需要多个,比如上面的例子中大于 60 的为及格,那我们还要判断大于 90 的为优秀,在 80 到 90 之间的良好呢?

这时候需要用到 if 语句多个判断条件,

用伪代码来表示:

if 判断条件1:
    执行语句1……
elif 判断条件2:
    执行语句2……
elif 判断条件3:
    执行语句3……
else:
    执行语句4……

实例:

results = 89

if results > 90:
    print('优秀')
elif results > 80:
    print('良好')
elif results > 60:
    print ('及格')
else :
    print ('不及格')

输出结果:

良好
  • if-语句多个条件同时判断
    Python 不像 Java 有 switch 语句,所以多个条件判断,只能用 elif 来实现,但是有时候需要多个条件需同时判断时,可以使用 or (或),表示两个条件有一个成立时判断条件成功;使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。
java = 86
python = 68

if java > 80 and  python > 80:
    print('优秀')
else :
    print('不优秀')

输出结果:

不优秀

注意:if 有多个条件时可使用括号来区分判断的先后顺序,括号中的判断优先执行,此外 and 和 or 的优先级低于 >(大于)、<(小于)等判断符号,即大于和小于在没有括号的情况下会比与或要优先判断。

java = 86
python = 68

if (80 <= java < 90) or (80 <= python < 90):
    print('良好')

输出结果:

良好

课上练习1

我想买车,买什么车决定于我在银行有多少存款
如果我的存款超过500万,我就买路虎
否则,如果我的存款超过100万,我就买宝马
否则, 如果我的存款超过50万,我就买迈腾
否则, 如果我的存款超过10万,我就买福特
否则, 如果我的存款10万以下 ,我买比亚迪

课上练习2

输入小明的考试成绩,显示所获奖励
成绩==100分,爸爸给他买辆车
成绩>=90分,妈妈给他买MP4
90分>成绩>=60分,妈妈给他买本参考书
成绩<60分,什么都不买
循环语句

一般编程语言都有循环语句,循环语句允许我们执行一个语句或语句组多次。
循环语句的一般形式如下:



Python 提供了 for 循环和 while 循环,当然还有一些控制循环的语句:

循环控制语句 描述
break 在语句块执行过程中终止循环,并且跳出整个循环
continue 在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环
pass pass 是空语句,是为了保持程序结构的完整性
  • while-循环语句
count = 1
sum = 0
while count <= 100:
    sum = sum + count
    count = count + 1
print(sum)

输出结果

5050

当然 while 语句时还有另外两个重要的命令 continue,break 来跳过循环,continue 用于跳过该次循环,break 则是用于跳出本层循环
比如,上面的例子是计算 1 到 100 所有整数的和,当我们需要判断 sum 大于 1000 的时候,不在相加时,可以用到 break ,退出整个循环

count = 1
sum = 0
while  count <= 100:
    sum = sum + count
    if  sum > 1000:  #当 sum 大于 1000 的时候退出循环
        break
    count = count + 1
print(sum)

输出的结果:

1035

有时候,我们只想统计 1 到 100 之间的奇数和,那么也就是说当 count 是偶数,也就是双数的时候,我们需要跳出当次的循环,不想加,这时候可以用到 continue

count = 1
sum = 0
while  count <= 100:
    if count % 2 == 0:  # 双数时跳过输出
        count = count + 1
        continue
    sum = sum + count
    count = count + 1
print(sum)

输出的语句:

2500

在 Python 的 while 循环中,还可以使用 else 语句,while … else 在循环条件为 false 时执行 else 语句块

比如:

count = 0
while count < 5:
   print (count)
   count = count + 1
else:
   print (count)

输出的结果:

0
1
2
3
4
5
  • for-循环语句
    for循环可以遍历任何序列的项目,如一个字符串
    它的流程图基本如下:


基本的语法格式:

for iterating_var in sequence:
   statements(s)

实例:

for letter in 'www.neuedu.com':
    print(letter)

输出的结果如下:

w
w
w
.
n
e
u
e
d
u
.
c
o
m

range()函数

Python函数range()让你能够轻松地生成一系列的数字。例如,可以像下面这样使用函数range()来打印一系列的数字:

    for value in range(1,5):
        print(value)

上述代码好像应该打印数字1~5,但实际上它不会打印数字5:

    1
    2
    3
    4

在这个示例中,range()只是打印数字1~4,这是你在编程语言中经常看到的差一行为的结果。函数range()让Python从你指定的第一个值开始数,并在到达你指定的第二个值后停止,因此输出不包含第二个值(这里为5)。

要打印数字1~5,需要使用range(1,6):

    for value in range(1,6):
        print(value)

这样,输出将从1开始,到5结束:

    1
    2
    3
    4
    5
  • 嵌套循环
    Python 语言允许在一个循环体里面嵌入另一个循环。上面的实例也是使用了嵌套循环的。

具体的语法如下:

for 循环嵌套语法

for iterating_var in sequence:
   for iterating_var in sequence:
      statements(s)
   statements(s)

while 循环嵌套语法

while expression:
   while expression:
      statement(s)
   statement(s)

除此之外,你也可以在循环体内嵌入其他的循环体,如在 while 循环中可以嵌入 for 循环, 反之,你可以在 for 循环中嵌入 while 循环

有 while … else 语句,当然也有 for … else 语句啦,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样。

for num in range(10,20):  # 迭代 10 到 20 之间的数字
   for i in range(2,num): # 根据因子迭代
      if num%i == 0:      # 确定第一个因子
         j=num/i          # 计算第二个因子
         print ('%d 是一个合数' % num)
         break            # 跳出当前循环
   else:                  # 循环的 else 部分
      print ('%d 是一个质数' % num)

输出的结果:

10 是一个合数
11 是一个质数
12 是一个合数
13 是一个质数
14 是一个合数
15 是一个合数
16 是一个合数
17 是一个质数
18 是一个合数
19 是一个质数

课上案例

  • 打印九九乘法表
for i in range(1, 10):
        for j in range(1, i+1):
            print('{}x{}={}\t'.format(i, j, i*j), end='')
        print()
1x1=1   
2x1=2   2x2=4   
3x1=3   3x2=6   3x3=9   
4x1=4   4x2=8   4x3=12  4x4=16  
5x1=5   5x2=10  5x3=15  5x4=20  5x5=25  
6x1=6   6x2=12  6x3=18  6x4=24  6x5=30  6x6=36  
7x1=7   7x2=14  7x3=21  7x4=28  7x5=35  7x6=42  7x7=49  
8x1=8   8x2=16  8x3=24  8x4=32  8x5=40  8x6=48  8x7=56  8x8=64  
9x1=9   9x2=18  9x3=27  9x4=36  9x5=45  9x6=54  9x7=63  9x8=72  9x9=81
  • 遍历list、set、dict等集合
  • l=[1,2,3,4,5,6,7]打印前五个元素

当我们同时需要索引和元素时,还有一种更简洁的方式,那就是通过 Python 内置的函数 enumerate()。用它来遍历集合,不仅返回每个元素,并且还返回其对应的索引,这样一来,上面的例子就可以写成:

l = [1, 2, 3, 4, 5, 6, 7]
for index, item in enumerate(l):
    if index < 5:
        print(item)  
              
1
2
3
4
5

条件与循环的复用
前面讲了条件与循环的一些基本操作,接下来,我们重点来看它们的进阶操作,让程序变得更简洁高效。
在阅读代码的时候,你应该常常会发现,有很多将条件与循环并做一行的操作,例如:

expression1 if condition else expression2 for item in iterable

将这个表达式分解开来,其实就等同于下面这样的嵌套结构:

for item in iterable:
    if condition:
        expression1
    else:
        expression2

而如果没有 else 语句,则需要写成:

expression for item in iterable if condition

举个例子,比如我们要绘制 y = 2*|x| + 5 的函数图像,给定集合 x 的数据点,需要计算出 y 的数据集合,那么只用一行代码,就可以很轻松地解决问题了:

y = [value * 2 + 5 if value > 0 else -value * 2 + 5 for value in x]

当然,这样的复用并不仅仅局限于一个循环。比如,给定两个列表 x、y,要求返回 x、y 中所有元素对组成的元祖,相等情况除外。那么,你也可以很容易表示出来:

[(xx, yy) for xx in x for yy in y if xx != yy]

这样的写法等价于:

l = []
for xx in x:
    for yy in y:
        if xx != yy:
            l.append((xx, yy))

随机数的处理

在 Python 中,要使用随机数,首先需要导入 随机数 的 模块 —— “工具包”

import random

导入模块后,可以直接在 模块名称 后面敲一个 . ,会提示该模块中包含的所有函数

random.randint(a, b) ,返回 [a, b] 之间的整数,包含 a 和 b

例如:

random.randint(12, 20)  # 生成的随机数n: 12 <= n <= 20   
random.randint(20, 20)  # 结果永远是 20   
random.randint(20, 10)  # 该语句是错误的,下限必须小于上限

综合练习---猜数字

计算机要求用户输入数值范围的最小值和最大值。计算机随后“思考”出在这个范围之内的一个随机数,并且重复地要求用户猜测这个数,直到用户猜对了。在用户每次进行猜测之后,计算机都会给出一个提示,并且会在这个过程的最后显示出总的猜测次数。这个程序包含了几种类型的我们学过的 Python 语句,例如,输入语句、输出语句、赋值语句、循环和条件语句。

一个可能的游戏过程如下:

Enter the smaller number: 1
Enter the larger number: 20
Enter your guess: 5
Too small
Enter your guess: 9
Too small
Enter your guess: 15
Too small
Enter your guess: 17
Too large
Enter your guess: 16
You've got it in 5 tries!
import random

smaller = int(input("Enter the smaller number: "))
larger = int(input("Enter the larger number: "))
myNumber = random.randint(smaller, larger)
count = 0
while True:
    count += 1
    userNumber = int(input("Enter your guess: "))
    if userNumber < myNumber:
        print("Too small")
    elif userNumber > myNumber:
        print("Too large")
    else:
        print("You've got it in", count, "tries!")
        break

四、模块与包

模块的概念

一个.py文件就称为一个模块

导入模块中类或函数的方式:

方式一:import 模块名
使用时:模块名.函数名()

import module1
module1.output()

方式二:from 模块名 import 函数名
使用时:函数名()

from module1 import output
output()

方式三:from 模块名-import *
使用时:函数名()

from module1 import *
output()

方式四:from 模块名 import 函数名 as tt(自定义)
注意原来的函数名将失效
使用时:tt()

from module1 import output as tt
tt()

可以在模块当中定义一个变量all,指定导出的函数子集:

使用all的影响: 后面的[]里面写什么函数名,使用from 模块名 import 方式导入时导入什么 all如果没有这个变量将全部导入(all仅限 于from 模块名 import 这种导入方式)

加all示例:

__all__=['output']
def output():
    print('hello neuedu')

def output2():
        print('hello output2')

以下代码报错

from module1 import *
output2()
包的概念

概念:包就是一个文件夹,里面包含了若干py文件以及一个_init_.py文件。

导入包中函数,以及模块的方式:

方式一:from 包名 import 模块名
使用时:模块名.函数名()

from neuedu import module3
module3.output()

方式二:from 包名模块名 import 函数名
使用时:函数名()

from neuedu.module3 import output
output()

方式三:import 包名模块名
使用的时候 包名.模块名.函数名()

import neuedu.module3
neuedu.module3.output()

方式四:from 包名 import *
前提是:将 init.py 文件中写入all变量(写入方式同模块导入的写入方式) 。 变量当中写入哪个模块则导入哪个模块,不写则什么都不导入 使用时:模块名.函数名() _init_.py

__all__ = ['module3']
from neuedu import *
module3.output()

方式五:import 包名

前提是:在包里面的init.py 文件里写入 from . import 模块名 init.py里面导入哪个模块 通过本方式就能使用哪个模块

使用时:包名.模块名.函数名() _init_.py

from . import module3
import neuedu
neuedu.module3.output()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容