<reponame>HoneyLC/PythonLearn
# 注释
"""
多行注释
"""
# helloworld
import random

print("helloworld");

# 算数运算符 :   +加法   -减法   *乘(字符串也可以使用乘法)  /除  //取整  %取余  **幂运算
print("顶顶顶顶" * 10);

# 变量的定义
number1 = 10;
number = "10000";

"""
数据类型:
    1.数字型: int long(python3中没有此类型)  float bool  complex(复数型)
    2.非数字型: 字符串 列表 元组 字典 
"""
demo = 10 ** 10;
# print(2 ** 1000000) # type函数 ,查看变量的类型
# money = input("请输入")  # input控制台输入的函数
# money = float(input("请输入"))  # float函数  把数字变成浮点数1
name = "name";
## 格式化字符:    %s 字符串  %d 整数  %06d表示显示的位数   %f浮点数 %.02f 表示小数点后两位  %% 输出%
print("你好 %s%%" % name)  # 格式化输出

"""
流程控制
"""
# if   逻辑运算符  and  or  not
if_num = 2;
if (if_num == 1):
    print("true")  # 缩进的为同一代码块
elif (if_num == 2):
    print("无效")
else:
    print("false")
print("外围")
print(random.randint(10, 20))
# 循环
# 赋值运算符   += =  -= *=   /=  //=  %=  **=

i = 1;
while i < 10:
    i = i + 1;
    if i == 8:
        continue;
    print(i);

"""
定义函数
"""


def function(num1, num2):
    """测试函数 (ctrl + q 查看方法注释)"""
    return num1 + num2;


print(function(10, 10))
"""
列表
"""

list = [1, 2, 3, 3];
list2 = [4]
list.append(10);
list.insert(1, 5)
list.extend(list2)
list.pop()
list.remove(2)

print(list.index(1))
print(list)
print(len(list))
print(list.count(""))
list.reverse()
list.sort()  # 升序
list.sort(reverse=True)  # 降序
print(list)
name = "小明";
del name;

# 遍历
lis = [];
for li in lis:
    print(li)

"""
元组(定义后不可修改)
应用场景:格式字符串;保证列表不被修改;函数的参数和返回值
"""
list3 = [];
tuple1 = (1, 2, 3, 4, 5, 6);
print(tuple1.count(1))
print(len(tuple1))
print(tuple1.index(1))
tuple(list3)

"""
字典(无序的对象集合)(key:value)
"""
people = {"name": "小明", "age": 18}
people1 = {"gender": "男"}
people["school"] = "北大"  # 增
people.pop("age")  # 删
people["school"] = "清华"  # 改
print(people["name"])  # 查
print(len(people))  # 长度
people.update(people1)  # 合并字典 重复的key会被覆盖
print(people)

# 遍历
for key in people.keys():
    print(people[key])
for k in people:
    print(people[k])

"""
字符串
"""
str1 = "helloed 'xiaom'";

for str in str1:
    print(str)

print(len(str1))
print(str1.count("h"))

print(str1[0:5])  # 字符串截取
print(str1[0:])
print(str1[-3:])
print(str1[::2])  # 步长
print(str1[-1::-1])  # 逆序
print(str1[::-1])  # 可以省略其实索引

## 公共方法
listnum = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(len(listnum))
print(max(listnum))
print(min(listnum))

print(id(listnum))
# 完整的for 变量 in 集合 :代码 else[循环结束后执行,使用break不执行] 代码

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

print(hash("hello"))

x = 0.0;

for i in range(10):
    x += 0.1;
    print(x)

# 在python中是无法直接修改全局变量的,需要使用global关键字
num = 100;


def update():
    global num;
    num = 200;
    print(num);


def update1():
    print(num);


update();
update1();


# 定义多个变量来接收返回的元组数据
def rt():
    return (1, 2);


num1, num2 = rt();
print(num1)
print(num2)

# 交换两个变量的值
a = 10;
b = 20;
# 方法1
c = a;
a = b;
b = c;
# 方法2
a = a + b;
b = a - b;
a = a - b;
#方法3
a,b = (b,a);
print(a, b)

## 定义缺省方法

def moren(num,age = True,gender=True):
    print(num)
    print(age)
    print(gender)
moren(10,gender=10);

# 接收多值元素  *args表示元组参数,**kwargs表示字典
def manyparam(num,*args,**kwargs):
    print(num)
    print(args)
    print(kwargs)
manyparam(1 ,name ="小明")

# 元组和字典的拆包   传参时元组前加*  字典前加**
# 递归
def number_sum(num):
    if num ==1:
        return 1 ;
    temp = number_sum(num - 1)
    return num +temp;

print(number_sum(10))




#dir内置函数
def demo():
    """内置参数"""
    print("hellowrold")

demo();
print(dir(demo))
print(demo.__doc__)


#身份运算符 is 和is not 类似于id(a)==id(b)和!=,如果对none进行比较  使用is
#比较  == 比较的是内容  is 比较的是内存地址
