记录从准研一假期自学PYTHON的全过程day2

103 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情

今天是在暑假自学的第二天,继续昨天的Python学习:

python中数据的左移与右移

*由于python与其他语言不同,正数左移永远是正数

左移一位=* 2 <<

右移一位=/ 2 >> (正数补0,负数补1)负数减1除2

print(5<<1)
print(bin(5))
print(bin(10))

输出结果为: 10

0b101

0b1010

算法题:找出七个数中只出现过一次的那个数字 思路:任何一个数字和自己异或是零,和零异或是自身

list1 = [2, 3, 4, 5, 4, 3, 2]
num = 0
for i in list1:
    num ^= i
print(num)

if-else-while语句

age = 100
if age >= 0 and age <= 120:
    print("年龄正确")
else:
    print("年龄错误")

if:

elif:

elif:

else: 同样是判断语句

import random


def game():
    player = int(input("请出拳 石头(1),剪刀(2),布(3):"))
    computer = random.randint(1, 3)
    if ((player == 1 and computer == 2) or (player == 2 and computer == 3) or (player == 3 and computer == 1)):
        print("你获胜")
    elif computer == player:
        print("平局")
    else:
        print("电脑获胜")


game()

while循环和if使用方法相同:

i = 0
re = 0
while i <= 100:
    re += i
    i += 1
print("0~100的总和是:%d" % re)

这里要牢记python中的占位符:%d %变量

continue与break

continue跳过continue下面的所以语句,直接回到while判断语句中

break直接跳出循环

def print_star():
    row = 1
    while row <= 5:
        print("*" * row)
        row += 1

print_star()

想要控制输出的结果,可以在print语句之后加end=''

print("*" * row,end="")

python中的变量类型:

数字型:整型,浮点,布尔,复数

非数字型:列表,元组,字符串,字典,集合

转义字符:ord与chr

ord将字符转化为ASCII chr将ASCII转化为字符

运算符:算数,关系,逻辑,位运算

函数与模块

import 导入自己写的模块

在另一个模块调用这个模块的方法是:

模块名.模块内的方法(参数1,参数2)

python修改变量后,只会让变量指向新的地址,而不会改变原本变量所在地址的值。

比如在函数外部定义一个变量a,在函数内修改a的值,并不会改变函数之外变量a的地址与数值(这是与C语言不同的地方)

python赋值后指向了另外一个地方:

def test(num):
    print("test函数内a的值:%d,以及a此刻的地址:%d" % (num, id(num)))
    num = 5
    print("test函数内a的值:%d,以及a此刻的地址:%d" % (num, id(num)))

a = 10
print("未修改之前a的值:%d 以及a所在的地址:%d" % (a, id(a)))
test(a)

输出的结果为:

未修改之前a的值:10 以及a所在的地址:2363134143056

test函数内a的值:10,以及a此刻的地址:2363134143056

test函数内a的值:5,以及a此刻的地址:2363134142896

函数中的可变类型与不可变类型

1.可变类型:内存中的数据可以被修改。 列表list,字典dict,集合set

*不可变类型:不可以实现在被调用函数内去修改调用函数内的某一个值

2.不可变类型:内存中的数据不可以被修改。 数字类型int,bool,float,complex,字符串str,元组tuple

a=1
print(id(a))
a="hello"
print(id(a))
a=[1,2,3]
print(id(a))
a=[3,2,1]
print(id(a))

输出结果:

image.png

*python中每次赋值都会将变量指向一个新的地址

以上为可变变量的演示

demo_list = [1, 2, 3]
print(demo_list)
print(id(demo_list))
demo_list.append(4)
print(demo_list)
print(id(demo_list))

而使用上述代码时,list的变量地址是不变的。因为使用的是append接口,在加入一个元素的时候要先找到其地址。

*使用切片同样可以不修改地址改变其内容

#全局变量与局部变量
num = 10

def demo():
    num = 5


demo()
print(num)

可以先猜测一下这个代码执行结果是什么,num的值为多少?

没错,猜的很对

结果为10

num=10为全局变量,在函数内部修改变量无法改变全局变量的值。

想要在函数内部修改全局变量的值,只要在函数内部的num中添加一个global:

num = 10

def demo():
    global num
    num=5


demo()
print(num)

*global的作用相当于把全局变量num放进函数中去。

================================================================

第二天的学习结束

已经步入了函数的学习,后面学的会慢慢深入。