Python学习笔记 五:基础知识总结

1. 变量和类型

  • 常用的数据类型:
    • 整数:Python 3中只有int这一种,且支持二进制(0b100 = 4)、八进制(0o100 = 8)、十进制、十六进制(0x100 = 256)
    • 浮点型:也称做小数,并且支持科学计数法
    • 字符串类型:以单引号或双引号括起来的任意文本,特殊用法:用三个引号可以书写多行文本
    • 布尔型:0(false)、true(1、2、3…)
    • 复数型:和数学上的表示一样,唯一不同的是虚部的i换成了j
#算术运算
a = 5
b = 2
print(a + b)  # 7
print(a - b)  # 3
print(a * b)  # 10
print(a / b)  # 2.5
print(a // b) # 2
print(a % b)  # 1
print(a ** b) # 25

使用type()检查变量的类型:


a = 1
b = 3.14
c = 5 + 2j
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'>

1.1 变量类型转换

  • int():将数值或字符串转换成整数
  • float():将字符串转换成浮点数
  • str():将指定的对象转换成字符串形式,可指定编码
  • chr():将整数转换成该编码对应的字符串(一个字符)
  • ord():将字符串(一个字符)转换成对应的编码(整数)
a = int(input('a = '))
b = int(input('b = '))
print('%d + %d = %d' % (a, b, a + b)) # %后面跟的变量值会替换掉占位符
print('%d - %d = %d' % (a, b, a - b))
print('%d * %d = %d' % (a, b, a * b))
print('%d / %d = %f' % (a, b, a / b))
print('%d // %d = %d' % (a, b, a // b))
print('%d %% %d = %d' % (a, b, a % b))
print('%d ** %d = %d' % (a, b, a ** b))
# 占位符语法:
# %d是整数的占位符
# %f是小数的占位符
# %%表示百分号

a = 1
b = 1
1 + 1 = 2
1 - 1 = 0
1 * 1 = 1
1 / 1 = 1.000000
1 // 1 = 1
1 % 1 = 0
1 ** 1 = 1

# 赋值运算符和复合赋值运算符
a = 2
b = 3
a += b     # 等于a = a + b
a *= a + 1 # 等于a = a * (a + 2)
print(a) 

30


案例1:华氏温度转换为摄氏温度

# 案例一:
# 华氏温度到摄氏温度的转换公式为:$C= (F - 32)/div 1.8$

F = float(input("请输入华氏温度:"))
C = (F - 32) / 1.8
print("%.1f华氏度 = %.1f摄氏度" % (F, C)) # 也可以使用:%

请输入华氏温度:100
100.0华氏度 = 37.8摄氏度

案例2:输入圆的半径计算计算周长和面积

# 案例二:
import math

r = float(input("请输入圆的半径:"))
perimeter = 2 * math.pi * r
area = math.pi * r ** 2
print("圆的周长为:%.2f" % perimeter)
print('圆的面积为:%.2f' % area)

请输入圆的半径:2
圆的周长为:12.57
圆的面积为:12.57

案例3:输入年份判断是否为闰年

#输入年份,如果是闰年输出true,否则为false

year = int(input("请输入年份:"))
lead_year = (year % 4 == 0 and year % 100 != 0) or \
             year % 400 == 0
print(lead_year)

分支结构

  • if语句
    • elif、else
    • 嵌套的分支结构
  • 对比两个案例,我们可以得出,案例1更容易理解和运行,说明平的比嵌套的好,即扁平化
    • 能使用扁平化的结构时就不要使用嵌套
# 案例1:

a = input("输入关键字:")

if a == "1":
    print("yes")
else:
    print("no")
    
# 案例2:
# 分段函数求值:
"""
        3x - 5  (x > 1)
f(x) =  x + 2   (-1 <= x <= 1)
        5x + 3  (x < -1)

"""

x = float(input("x = "))

if x > 1:
    f = 3 * x -5
elif -1 <= x <= 1:
    f = x + 2
else:
    f = 5 * x +3
print('f(%.2f) = %.2f' % (x, f))

# 案例2:
# 嵌套的分支结构,完成上面的分段函数求值
# 双层嵌套

x = float(input('x =  '))

if x > 1:
    f = 3 * x - 5
else:
    if x >= -1:
        f = x + 2
    else:
        y = 5 * x + 3
print('f(%.2f) = %.2f' % (x, f))

案例3:百分制成绩转换为等级制成绩

score = float(input("请输入成绩: "))

if score >= 90:
    print("A")
elif score >= 80:
    print("B")
elif score >= 70:
    print("C")
elif score >= 60:
    print("D")
else:
    print("E")

循环结构

  • for-in 循环(已知循环次数时使用)
    • range的用法:
      • range(101)生成0到100的整数数列
      • range(1, 100)生成1到99的整数数列
      • range(1, 100, 2)生成1到99的数列,步长为:2
  • while循环(未知循环次数时使用)
    • break: 终止break所在的那个循环
    • continue: 放弃本次循环后续的代码直接让循环进入下一轮
# 循环求和
s = 0

for x in range(11):
    s += x
print(s)
# 双重循环嵌套
# 实现九九乘法表

for i in range(1, 10):
    for j in range(1, i+1):
        s = i * j
        print(s, end ="\t")
    print()

案例1:水仙花数案例:

  • 水仙花数是一个三位数,该数字上每位数字的立方之和等于这个三位数
for num in range(100,1000):
    fir = num % 100
    sec = num // 10 % 10 # 此处使用地板除
    thd = num // 100
    if num == fir ** 3 + sec ** 3 + thd ** 3:
        print(num)
        # 407

案例2:将正整数反转(使用while循环)

  • 例如:123变成321
num = int(input('num = '))
reversedNum = 0
while num > 0:
    
    # 首先,反转数字reversed_num为0
    # 被反转的数字每次将他的最低位数字给 reversedNum
    # 并且每次扩大10倍
    
    reversedNum = reversedNum * 10 + num % 10
    num //= 10
    
print(reversedNum)


案例3:Craps赌博游戏(将上面的语法汇总实现)

  • 该游戏使用两粒骰子,玩家通过摇__两粒__骰子获得点数进行游戏。
  • 游戏规则:
    • 玩家第一次摇骰子如果摇出了 7点 或 11点,玩家胜
    • 玩家第一次如果摇出 2点、3点 或 12点,庄家胜
    • 其他点数玩家继续摇骰子
      • 如果玩家摇出了7点,庄家胜
      • 如果玩家摇出了第一次摇的点数,玩家胜
      • 其他点数,玩家继续要骰子,直到分出胜负
from random import randint

money = 1000
while money > 0:
    print('你的总资产为:', money)
    needs_go_on = False
    
    while True:
        debt = int(input('请下注: '))
        if 0 < debt <= money:
            break
            
    first = randint(1, 6) + randint(1, 6)
    print('玩家摇出了%d点' % first)
    
    if first == 7 or first == 11:
        print('玩家胜!')
        money += debt
    elif first == 2 or first == 3 or first == 12:
        print('庄家胜!')
        money -= debt
    else:
        needs_go_on = True
    while needs_go_on:
        needs_go_on = False
        current = randint(1, 6) + randint(1, 6)
        print('玩家摇出了%d点' % current)
        if current == 7:
            print('庄家胜')
            money -= debt
        elif current == first:
            print('玩家胜')
            money += debt
        else:
            needs_go_on = True
print('你破产了, 游戏结束!')

案例4:找出1~999之间的所有完美数

  • 完美数是除自身外其他所有因子的和正好等于这个数本身的数
  • 例如: 6 = 1 + 2 + 3, 28 = 1 + 2 + 4 + 7 + 14
import math

for num in range(1, 1000):

    result = 0
    for factor in range(1, int(math.sqrt(num)) + 1): # sqrt:表示平方根函数
        # 确定出factor是否是因子,即能够完全整除的数
        if num % factor == 0:
            result += factor
            # 排除相同的因子,例如4 = 2 * 2
            if factor > 1 and num // factor != factor:
                result += num // factor
    # 判断因子之和是否和数字本身相等
    if result == num:
        print(num) 

1
6
28
496

案例5:输出100以内所有的素数

  • 素数指整数在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数
import math

for num in range(2, 100):
    prime = True
    # 对num进行开平方,可以这样理解:
    # 100以内的数字只要能够整除2到int(math.sqrt(num)) + 1之间的数
    # 就表明,这个数不是素数,即不止1和他本身两个因子
    for factor in range(2, int(math.sqrt(num)) + 1):
        if num % factor == 0:
            prime = False
            break
    if prime == 1:
        print(num, end=' ')

猜你喜欢

转载自blog.csdn.net/amyniez/article/details/104383899