Python100天学习笔记 Day01-05

Python - 100天从新手到大师

项目地址:https://github.com/jackfrued/Python-100-Days

本文代码皆为自己手撸,标程请参考每一节自带的code

目录

Python - 100天从新手到大师

Day 01 初识Python

Day 02 语言元素

Day 03 分支结构

Day 04 循环结构

Day 05 构造程序逻辑


Day 01 初识Python

环境搭建部分直接略过,目前我使用的环境是Anaconda+Pycharm

单行注释:以#和空格开头的部分
多行注释:三个双引号开头,三个双引号结尾

这里应该还要加一个东西,不知道后面有没有讲,如果代码中有涉及中文,最好是加上
# -*- coding: utf-8 -*-


惯例走一个
print('hello, world!')

工具介绍
交互式编程工具 - IPython、Jupyter

Day 02 语言元素

整型:Python中只有int一种,而且支持各种进制表示,如二进制0b100,八进制0o100,十进制100,十六进制0x100
浮点型:支持数字写法(如123.456)及科学计数法(1.23456e2)
字符串型:字符串是以单引号或双引号括起来的任意文本,如'hello',"hello",还有原始字符串表示法、字节字符串表示法、Unicode字符串表示法,而且可以书写成多行的形式(用三个单引号或三个双引号开头,三个单引号或三个双引号结尾)。
布尔型:只有True和False两个值(严格区分大小写)
复数型:形如3+5j,虚数部分的i在Python里是j

变量命名规则

  • 字母、数字、下划线组成,数字不能开头
  • 严格区分大小写
  • 不能使用保留字
  • 多个单词用下划线连接,用小写字母拼写
  • 受保护的实例属性用单个下划线开头
  • 私有的实例属性用两个下划线开头

使用print语句可以输出表达式运算结果,如print(a+b)
使用input语句通过键盘赋值,用int()进行类型转换,如a = int(input('a=')),原文中等号前后均有空格,但这不对
使用占位符格式化输出字符串:print('%d + %d = %d' % (a, b, a + b))
使用type()检查变量的类型:print(type(a))

类型转换函数

  • int():将一个数值或字符串转换成整数,可以指定进制,转换的前提是传入的值能直接转换成整数
  • float():转换成浮点数
  • str():转换成字符串,可以指定编码
  • chr():将整数转换成该编码对应的字符
  • ord():chr()的反运算,将字符转换成编码

运算符优先级

运算符 描述
`[]` `[:]` 下标,切片
`**` 指数
`~` `+` `-` 按位取反, 正负号
`*` `/` `%` `//` 乘,除,模,整除
`+` `-` 加,减
`>>` `<<` 右移,左移
`&` 按位与
`^` `\|` 按位异或,按位或
`<=` `<` `>` `>=` 小于等于,小于,大于,大于等于
`==` `!=` 等于,不等于
`is`  `is not` 身份运算符
`in` `not in` 成员运算符
`not` `or` `and` 逻辑运算符
`=` `+=` `-=` `*=` `/=` `%=` `//=` `**=` `&=` `\|=` `^=` `>>=` `<<=` (复合)赋值运算符

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本质上不用记那么多,加括号就完事儿了XD

Day 03 分支结构

使用if、elif和else构建分支结构,下面是文章中的案例,可以看到Python是用缩进四个空格来构造代码块的,用了Pycharm就能自动添加缩进,elif就是else-if

"""
用户身份验证

Version: 0.1
Author: 骆昊
"""

username = input('请输入用户名: ')
password = input('请输入口令: ')
# 如果希望输入口令时 终端中没有回显 可以使用getpass模块的getpass函数
# import getpass
# password = getpass.getpass('请输入口令: ')
if username == 'admin' and password == '123456':
    print('身份验证成功!')
else:
    print('身份验证失败!')

Day 04 循环结构

构建循环结构有两种,一种是for-in循环,一种是while循环

如果明确的知道要循环多少次,则可以用for-in循环

"""
用for循环实现1~100求和

Version: 0.1
Author: 骆昊
"""

sum = 0
for x in range(101):
    sum += x
print(sum)

range用于产生一个不变的数值序列,而且这个序列通常都是用在循环中的

  • range(101)可以产生一个0到100的整数序列。
  • range(1, 100)`可以产生一个1到99的整数序列
  • range(1, 100, 2)可以产生一个1到99的奇数序列,其中的2是步长,即数值序列的增量

如果不知道具体循环的次数,则可以用while循环,根据条件来判断循环是否结束

"""
猜数字游戏
计算机出一个1~100之间的随机数由人来猜
计算机根据人猜的数字分别给出提示大一点/小一点/猜对了

Version: 0.1
Author: 骆昊
"""

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('你的智商余额明显不足')

这里使用了random.ranint来产生1-100内的随机整数,break是终止当前所在循环,还有一个continue是用于放弃本轮循环,进入下一轮。

本篇里有个赋值语句引起了我注意

x, y = y, x

这样的写法等同于交换x和y的值,不用额外的使用临时变量做中转了。

Day 05 构造程序逻辑

1.寻找水仙花数

# -*- coding: utf-8 -*-

# 找出三位数以内的所有水仙花数
# 水仙花数:一个数等于它本身每一位数字的立方加和,则为水仙花数
# Author :Kevin Luo

x: int
for x in range(1000):
    b = x // 100  # 求出百位
    s = (x - x // 100 * 100) // 10  # 求出十位
    g = x - b * 100 - s * 10
    if b ** 3 + s ** 3 + g ** 3 == x: # **表示立方运算
        print(x)

2.寻找完美数

# -*- coding: utf-8 -*-

# 找出三位数以内的所有完美数
# 完美数:一个数恰好等于它的因子(不包含其本身)之和
# Author :Kevin Luo


s = 0  # 变量s用于所有因子的求和
for i in range(1, 1000):  # 循环变量i用于遍历1000以内的所有数
    for j in range(1, i):  # 循环变量j用于遍历出数字i的所有因子(不包含其本身)
        if i % j == 0:
            s += j
    if s == i:
        print(i)
    s = 0

3.百钱百鸡

# -*- coding: utf-8 -*-

# 百钱百鸡:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
# Author :Kevin Luo

w = 0  # 循环变量g用于计算鸡翁数量
m = 0  # 循环变量m用于计算鸡母数量
c = 0  # 循环遍历c用于计算鸡雏数量

for w in range(0, 100 // 5 + 1):
    for m in range(0, 100 // 3):
        c = 100 - w - m
        if c % 3 == 0:
            if w * 5 + m * 3 + c / 3 == 100:
                print('鸡翁数量为:', w, '鸡母数量为', m, '鸡雏数量为', c)

4.生成斐波那契数列

# -*- coding: utf-8 -*-

# 生成100内的斐波那契数列
# Author :Kevin Luo

i1 = 1
i2 = 1  # 边界条件

print(i1, '', end='')  # 使用end=让输出不换行
print(i2, '', end='')

while i1 + i2 < 100:
    temp = i2
    i2 = i1 + i2
    i1 = temp
    print(i2, '', end='')

5.Craps赌博游戏

# -*- coding: utf-8 -*-

# 规则:玩家掷两个骰子,每个骰子点数为1-6,如果第一次点数和为7或11,则玩家胜;如果点数和为2、3或12,则玩家输庄家胜。若和为其他点数,
# 则记录第一次的点数和,玩家继续掷骰子,直至点数和等于第一次掷出的点数和则玩家胜;若掷出的点数和为7则庄家胜。
# Author :Kevin Luo

import random

x1 = random.randint(1, 6)  # 第一个骰子
x2 = random.randint(1, 6)  # 第二个骰子
fp = x1 + x2  # 记录第一次掷出的点数和
print('第1次玩家掷出的点数和:%d' % fp)
flag = 0  # 游戏结束标识,0为未结束,1为结束
counter = 1  # 记录投掷的次数

while flag == 0:
    if fp in [7, 11]:
        flag = 1
        print('玩家胜')
    elif fp in [2, 3, 12]:
        flag = 1
        print('庄家胜')
    else:
        while flag == 0:
            x1 = random.randint(1, 6)  # 继续掷出第一个骰子
            x2 = random.randint(1, 6)  # 继续掷出第二个骰子
            p = x1 + x2  # 记录后续点数和
            counter += 1
            print('第%d次玩家掷出的点数和:%d' % (counter, p))

            if p == fp:
                flag = 1
                print('玩家胜')
            elif p == 7:
                flag = 1
                print('庄家胜')
            else:
                continue

 

你可能感兴趣的:(学习笔记,Python)