阿里天池训练营学习笔记(一)

这篇博客介绍了Python的基础知识,包括变量、运算符(如除、整除、取余、幂等)、数据类型(如整型、浮点型、布尔型)以及控制结构(条件语句、循环语句)。文中详细阐述了Python中的is与==的区别,以及数据类型的转换。此外,还讲解了print()函数的用法、条件语句的实现,并给出了循环语句的示例。文章最后提到了文件操作的基本方法。
摘要由CSDN通过智能技术生成

阿里天池训练营学习笔记
学习链接~AI训练营-阿里云天池

Python学习笔记

写在开头:
写python程序也就是我们俗称的“py交易”(手动滑稽O(∩_∩)O),python作为一门开源的编程语言,在学习的时候自然而言的采取“编程的思维”,这个话太形而上学了(自己码龄尚浅,菜鸡一枚),但在我看来就是通过不断上机跑程序来验证自己学的知识,很多事情通常都是为了简单而去设置的,所以没有那么多的为什么,“能解决问题才是最关键的”,但是解决问题只是我们的初级目标,在这个过程中如何写最“高效”的程序——用最短的代码,花费最少的时间,最少的内存来解决问题,这是我们在这个过程中不断要思考的问题(这些话写的太严肃了,其实我本人就是一个铁憨憨,那么快乐的学习之旅就要开始了,有木有炒鸡激动~)

学习地址如下:
Python训练营

task1

  • 变量、运算符与数据类型
  • 位移码
  • 条件语句
  • 循环语句
  • 异常处理

上述列举的内容和C语言中涉及到的相差不大,但如果python是你接触到的第一门编程语言的话,上手就需要花费一些精力了。

1. 常见运算符

整理一些常见的运算符

操作符名称示例
/3/4=0.75
//整除3//4=0
%取余3%4=3
**2**3=8
~按位取反~4=-5
&按位与4&5=4
^按位异或4^5=1
<<左移4<<2 =16
>>右移4>>2=1
in存在‘A’ in [‘A’, ‘B’, ‘C’]
not in不存在‘h’ not in [‘A’, ‘B’, ‘C’]
is“hello” is “hello”
not is不是“hello” is not “hello”
**指数(最高优先级)
按位翻转,一元加号和减号
* / % //乘,除,取模和取整除)
+ -加法减法
>> <<右移,左移运算符
&位‘AND’
^|位运算符
<=<>>=比较运算符
<>==!=等于运算符
=%=/=//=-=+=*=**=赋值运算符
is is not身份运算符
in not in成员运算符
not and or逻辑运算符

比如:

print(1 + 1)  # 2
print(2 - 1)  # 1
print(3 * 4)  # 12
print(3 / 4)  # 0.75
print(3 // 4)  # 0
print(3 % 4)  # 3
print(2 ** 3)  # 8
print(-3 ** 2)  # -9
print(3 ** -2)  # 0.1111111111111111
print(1 << 3 + 2 & 7)  # 0
print(-3 * 2 + 5 / -2 - 4)  # -12.5
print(3 < 4 and 4 < 5)  # True

一些注意点:

  • is, is not 对比的是两个变量的内存地址
  • ==, != 对比的是两个变量的值
  • 比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是完全等价的。
  • 对比的两个变量,指向的是地址可变的类型(list,dict,tuple等),则两者是有区别的。
2. 数据类型与转换
类型名称示例
int整型 <class 'int'>-876, 10
float浮点型<class 'float'>3.149, 11.11
bool布尔型<class 'bool'>True, False

【例1】通过 print() 可看出 a 的值,以及类 (class) 是int

a = 1031
print(a, type(a))
# 1031 <class 'int'>

【例2】找到一个整数的二进制表示,再返回其长度

a = 1010
print(bin(a))
#0b1111110010
print(a.bit_length())
#10

  • 有时候我们想保留浮点型的小数点后 n 位。可以用 decimal 包里的 Decimal 对象和 getcontext() 方法来实现。

【例3】使 1/3 保留 4 位

import decimal
from decimal import Decimal
decimal.getcontext().prec = 4
c = Decimal(1) / Decimal(3)
print(c)
# 0.3333

——————2020/1/21 暂时更新到此处

----------------------续----------------------

1.获取类型信息

通常有两种方式:

  • type() 不考虑继承关系,不会认为子类是一种父类类型。
  • isinstance()会认为子类是一种父类类型,考虑继承关系。

当判断两个类型是否相同时,推荐使用 isinstance()

【例】

print(int('100'))  # 100
print(int(100.12))  # 100
print(float('100.12'))  # 100.12
print(float(100))  # 100.0
print(str(10 + 10))  # 40
print(str(15.1 + 5.5))  # 20.6

2.类型转换

  • 转换为整型 int(x, base=10)
  • 转换为字符串 str(object='')
  • 转换为浮点型 float(x)

3.print()函数

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

【例】一个输出实例

alist = ['abc', 'def', 'ghi', 'jkl']
print("words as follows")
for item in alist:
	print(item)
for item in alist:
    print(item, 'another string', sep='&')
# words as follows
# abc
# def
# ghi
# jkl
# abc&another string
# def&another string
# ghi&another string
# jkl&another string

注: 上述例子中item值与another string两个值之间用sep设置的参数&分割。由于end参数没有设置,因此默认是输出解释后换行,即end参数的默认值为\n

4.条件语句

经典例题:

temp = input("猜一猜我想的是哪个数字?")
guess = int(temp) # input 函数将接收的任何数据类型都默认为 str。
if guess == 520:
    print("你太了解我的心思了!")
    print("哼,猜对也没有奖励!")
else:
    print("猜错了,我现在心里想的是520!")
print("游戏结束,不玩儿啦!")

注:

  • Python使用缩进而不是大括号来标记代码块边界,因此要特别注意else的悬挂问题。
  • elif 语句即为 else if。

【例】

temp=input("Please input your scores")
score=int(temp)
if 100 >= score >=90:
    print('A')
elif 89 >= score >=80:
    print('B')
elif 79 >= score >= 60:
    print('C')
elif 59 >= score >= 0:
    print('D')
else:
    print('输入错误!')

5.循环语句

1)while 布尔表达式:
    代码块
    
2)while 布尔表达式:
    代码块
else:
    代码块
3)for 迭代变量 in 可迭代对象:
    代码块
4)for 迭代变量 in 可迭代对象:
    代码块
else:
    代码块

【例】

for i in 'ILovePythpn':
    print(i, end=' ')  # 不换行输出

dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
for key, value in dic.items():
    print(key, value, sep=':', end=' ')
# a:1 b:2 c:3 d:4 

【例】表示10-99所有的素数,如果不是素数则表示其因子分解。

for num in range(10, 100):
    for i in range(2,num):
        if num%i==0:
            print("%d = %d*%d" %(num,i,num/i))
            break
    else:
        print(num, '是一个质数')

6.一些函数

1) range()函数
  • range(2, 9)表示28的整数。
  • range(1, 10, 2)表示19步长为2的整数。
  • range(10)表示range(0,10)
2) enumerate()函数
enumerate(sequence, [start=0])
  • sequence:一个序列、迭代器或其他支持迭代对象。
  • start:下标起始位置。
  • 返回 enumerate(枚举) 对象
names = ["张三", "李四", "王五", "刘六"]
names = list(enumerate(names))
print(names)
#[(0, '张三'), (1, '李四'), (2, '王五'), (3, '刘六')]
names = list(enumerate(names, start=1))
print(names)
#[(1, (0, '张三')), (2, (1, '李四')), (3, (2, '王五')), (4, (3, '刘六'))]
3)randint()函数
import random
secret = random.randint(a,b) #[a,b]之间的随机数
4)break与continue
5)推导式

【例】

x = [i ** 2 for i in range(1, 10)]
print(x)
# [1, 4, 9, 16, 25, 36, 49, 64, 81]
x = [(i, i ** 2) for i in range(6)]
print(x)
# [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]
x = [[i, j] for i in range(0, 3) for j in range(0, 3)]
print(x)
# [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]
x[0][0] = 10
print(x)
# [[10, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]

【元组表达式】

a = (x for x in range(10))
print(a)
# <generator object <genexpr> at 0x0000025BE511CC48>
print(tuple(a))
#表示元组:tuple
# (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

从上面这一组代码中可以看成,如果要表示一个元组a的数据,不能直接print(a),而应该用一个for循环

for each in a:
	print(each, end=' ')#表示不换行

如果是一个数组,则可以直接写为print(tuple(a))

7.文件打开

f = open('test.txt')
print(f.read())
f.close()

——————2020/1/22 暂时更新到此处

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值