0%

python学习笔记(1) Hello World

  1. 输入输出
  2. 变量
    1. 类型
      1. 类型检查
      2. 类型转换
    2. 运算符与优先级
  3. 判断
  4. 循环
    1. for-in
    2. while

输入输出

print函数的用法

1
2
print('%d %s %c %f' % (10, 'str', 'c', 123.45))
print('hello', 'world', sep=', ', end='!') # hello, world!

格式化字符串中的参数设定与C语言完全一致,允许诸如%ld, %lf, %10.4f等输入

%x 十六进制,%d 十进制,%o 八进制

输出二进制:用bin()函数。例:print(bin(10)) -> 0b1010

从终端获取用户输入的方法

1
a = input('a = ')

变量

类型

  • 整型
    • 二进制 - 0b 开头
    • 八进制 - 0o 开头
    • 十六进制 - 0x 开头
  • 浮点型
    • 一般 - 123.456
    • 科学计数法 - 12.3456e5, 1e5 (科学计数法均针对浮点型)
  • 字符串
    • 单行 - ''""
    • 多行 - '''"""
  • 布尔型 - True or False
  • 复数型 - 3 + 5j

类型检查

1
2
3
4
5
6
7
8
9
10
a = 100
b = 12.345
c = 1 + 5j
d = 'hello, world'
e = True
print(type(a)) # <class 'int'>
print(type(b)) # <class 'float'>
print(type(c)) # <class 'complex'>
print(type(d)) # <class 'str'>
print(type(e)) # <class 'bool'>

类型转换

  • int()
    • int(123.345) -> 123
    • int('123') -> 123
    • int(123s), int('123.45') -> 报错
    • int(0b100), int(0o100), int(0x100) 不同进制的整型变量
  • int(True) -> 1

    • int(False) -> 0
  • float()

    • float('123') -> 123.0
    • float('123.123') -> 123.123
    • float(123), float(123.0) -> 123.0
  • str() 字符串化
  • chr() 将整数转成字符,类型为字符串,但只有一个字符

    • 整数对应ASCII码
    • chr(65) -> A
  • ord() 将一个字符转换成ASCII码

    • 参数为字符串,长度只能为一个字符
    • ord('A') -> 65

运算符与优先级

优先级从高到低的所有运算符

运算符 描述
[] [:] 下标,切片
** 指数
~ + - 按位取反,正负号
* / % // 乘,除(结果为浮点型),模,整除(结果为整型)
+ - 加,减
>> << 右移,左移
& 按位与
^ ` ` 按位异或,按位或
<= < > >= 小于等于,小于,大于,大于等于
== != 等于,不等于
is is not 身份运算符(是否为同一地址)
in not in 成员运算符(针对序列,如字符串、数组、对象)
not or and 逻辑运算符(! ` `&&
= += -= *= /= %= //= **= &= ` =`^= >>= <<= (复合)赋值运算符
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# 下标,切片
a = [1, 2, 3, 4, 5]
b = a[2] # 3
c = a[2:3] # [3]
d = a[2:4] # [3, 4]

# 指数
a = 9**2 # 81

# 按位取反
a = 10
b = ~a # -11, ~n = -(n+1)

# 模,整除
a = 187
b = a % 10 # 7
c = a // 10 # 18

# 右移,左移
a = 326
b = a >> 2
c = a << 2
bin(a) # 0b101000110
bin(b) # 0b1010001
bin(c) # 0b10100011000

# 按位与,按位异或,按位或
a = 932
b = 648
c = a & b
d = a ^ b
e = a | b
bin(a) # 0b 1 1 1 0 1 0 0 1 0 0
bin(b) # 0b 1 0 1 0 0 0 1 0 0 0
bin(c) # 0b 1 0 1 0 0 0 0 0 0 0 -> 同为1时为1,否则为0
bin(d) # 0b 1 0 0 1 0 1 1 0 0 -> 不同时为1,相同时为0
bin(e) # 0b 1 1 1 0 1 0 1 1 0 0 -> 有一个为1时为1,否则为0

# 身份运算符
a = [1, 2, 3]
b = a
b is a # True
b = a[:]
b is a # False

# 成员运算符
a = [1, 2, 3, 4, 5]
b = 3
c = 6
b in a # True
c in a # False

a = 'abcde'
b = 'c'
c = 'f'
b in a # True
c in a # False

a = {'a': 'aaa', 'b': 'bbb', 'c': 'ccc'}
b = 'b'
c = 'd'
b in a # True
c in a # False

判断

  • if

  • elif

  • else

循环

for-in

用来某个容器进行迭代,这个容器可以用range()指定,也可以是一个数组、对象

1
2
3
4
5
6
7
obj = {}
for i in range(65, 70):
obj[chr(i)] = chr(i) + chr(i) + chr(i)
print(obj) # {'A': 'AAA', 'B': 'BBB', 'C': 'CCC', 'D': 'DDD', 'E': 'EEE'}

for c in obj:
print(obj[c])
  • range(100) - 从0到99
  • range(1, 100) - 从1到99
  • range(1, 100, 2) - 1,3,5,7,…,99

while

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import random

answer = random.randint(1, 100)
counter = 0
while True:
counter += 1
number = int(input('请输入: '))
if number < answer:
print('大一点')
elif number > answer:
print('小一点')
else:
print('恭喜你猜对了!')
break
print('你总共猜了%d次' % counter)
if counter > 7:
print('你的智商余额明显不足')