python 基础笔记
# paragraph = """ 这是一个段落,
# 可以由多行组成"""
# print(paragraph)
# input("\n\n 按下 enter 键后退出")
# import sys
# x = 'runoob'
# sys.stdout.write(x+'\n')
# a = 1
# if 1:
# print(1)
# elif 2:
# print(2)
# else:
# print(3)
# a=input('请输入:\n')
# print(a)
# import sys
# print('===================Python import mode===================')
# print('命令行参数为:')
# for i in sys.argv:
# print(i)
# print('\n python 路径为:', sys.path)
# a,b,c,d=1,5.5,True,4+3j
# print(type(a),type(b),type(c),type(d))
# class A:
# pass
# class B(A):
# pass
#
# print(type(A()))
# print(type(B()) == A) # False B属于A的子类,但是type不认为子类是一种父类类型
# print(isinstance(B(), A)) # True
# var1 = 1
# var2 = 2
# print(var1,var2)
# del var1, var2
#print(var1,var2)
# a = 1+2j
# b = 2e+12j
# print(a + b)
# str = 'runoob'
# print(str)
# print(str[0:-1]) #左包含右不包含
# print(str[0:2])
# def reverseWords(input):
# inputWords = input.split(" ")
# inputWords = inputWords[-1::-1]
# print(inputWords)
# output = ' '.join(inputWords)
# return output
# if __name__ == "__main__":
# input = 'I like runoob'
# rw = reverseWords(input)
# print(rw)
# tuple = ('1',2,4.4,5,7,8,9)
# print(tuple)
# print(tuple[0:2])
# tuple = (1,)
# print(tuple)# (1,)
# tuple = (1)
# print(tuple) # 1
# student = {'tom', 'jim', 'jim'}
# print(student) #{'tom','jim'}
# if 'tom' in student:
# print('存在该名')
# else:
# print('不存在该名')
#
# a=set('abcde')
# b=set('bcdefg')
# print(b-a) #差集
# print(a | b) #并集
# print(a & b) #交集
# print(a ^b) #不同时存在的元素
# dict = {}
# dict['one'] = '1-菜鸟教程'
# dict[2] = '2-菜鸟工具'
# print(dict)
# keys = dict.keys()
# values= dict.values()
# print(keys)
# print(values)
# list = [1,2,3,4,3,4,2]
# list = set(list)
# print(list)
# """
# hahahahahah
# """
# '''
# haha
# haha
# haha
# '''
# print(__doc__)
# a = 0
# b = 3
# print(a and b)
# import math
# a = math.modf(2.3)
# a = round(2.2)
# print(a)
# import random
# # a = range(10)
# # for i in a:
# # print(i)
# a = random.choice(range(10))
# print(a)
#
# random.seed(2)
# print(random.random())
# a = 12
# print("a=%o"%(a,))
# a = '123a'
# print(a.isnumeric())
# a = [1,2,3,4,4,3]
# print(list(set(a))) #去重
#
# list = ['taobao']
# list.remove('taobao')
# a = { "m":1, "n":2 }
# keys = a.keys()
# print(len(keys))
# it = iter(keys)
# for x in it:
# print(x,end=',')
# print(next(it))
# print(next(it))
# a = {1,2,3}
# a.remove(1)
# print(a)
#裴波纳契数列
# a = 0
# b = 1
# while b < 1000:
# print(b, end=',')
# a, b = b, a+b
# Number String Boolean Tuple dict List Set
# 可写函数说明
# def printme(str):
# "打印任何传入的字符串"
# print(str)
# return
#
#
# # 调用printme函数
# printme(str="菜鸟教程")
# 可写函数说明
# def printinfo(name, age):
# "打印任何传入的字符串"
# print("名字: ", name)
# print("年龄: ", age)
# return
#
#
# # 调用printinfo函数
# printinfo(age=50, name="runoob")
"不定长参数"
# 可写函数说明
# def printinfo(arg1, *vartuple):
# "打印任何传入的参数"
# print("输出: ")
# print(arg1)
# print(vartuple)
# # 调用printinfo 函数
# printinfo(1, 2, 3)
# 可写函数说明
# def printinfo(arg1, **vardict):
# "打印任何传入的参数"
# print("输出: ")
# print(arg1)
# print(vardict)
# # 调用printinfo 函数
# printinfo(1, a=2, b=3)
# def f(a,b,*d,c):
# print(d)
# return a+b+c
#f(1,2) #报错
#print(f(1,2,c=3))
#print(f(1,2,4,c=3))
"匿名函数"
# sum = lambda arg1,arg2: arg1+arg2
# print(sum(10,20))
"global 和 nonlocal关键字"
# num = 1
# def fun1():
# global num # 需要使用 global 关键字声明
# print(num)
# num = 123
# print(num)
# fun1()
# print(num)
# def outer():
# num = 10
# def inner():
# nonlocal num # nonlocal关键字声明
# num = 100
# print(num)
# inner()
# print(num)
# outer()
"将列表当作队列使用"
# from collections import deque
# queue = deque(['Eric', 'John', 'Michael'])
# queue.append('Terry')
# queue.append('Graham')
# print(queue.popleft())
# print(queue.popleft())
# print(queue)
# it = iter(queue)
# for x in it:
# print(x, end=' ')
"列表推导式"
# vec = [2,4,6]
# new = [3*x for x in vec]
# print(new)
# new1 = [[x,x**2] for x in vec]
# print(new1)
"遍历技巧"
# dict = {
# 'gallabad':'the pure',
# 'robin': 'the brave'
# }
# for k,v in dict.items():
# print(k,':',v)
# list = ['tic','tac','toe']
# for i,v in enumerate(list):
# print('index:',i)
# print('value:',v)
# questions = ['name','quest','favorite color']
# answers = ['lancelot', 'the holy grail', 'blue']
# for q, a in zip(questions, answers):
# print('What is your {0}? It is {1}.'.format(q,a))
"异常"
# try:
# raise NameError('HiThere')
# except NameError:
# print('An exception flew by!')
# raise
# finally:
# print('goobye')
"测试模块"
# def average(values):
# return sum(values) / len(values)
# import unittest
# class TestStatisticalFunctions(unittest.TestCase):
# def test_average(self):
# self.assertEqual(average([20,30,70]),50.0)
# self.assertEqual(round(average([1, 5, 7]), 1), 4.3)
# self.assertRaises(ZeroDivisionError, average, [])
# self.assertRaises(TypeError, average, 20, 30, 70)
# unittest.main()
"python实例"
"---平方根"
# num = float(input('请输入一个数字:'))
# num_sqrt = num ** 0.5
# print('{}的平方根为{}'.format(num, num_sqrt))
"---二元方程"
# ax**2 + bx +c = 0
# import cmath
# a = float(input('请输入a:'))
# b = float(input('请输入b:'))
# c = float(input('请输入c:'))
# # d = b**2 -4*a*c 数学公式
# d = b**2 -4*a*c
# x1 = (-b+cmath.sqrt(d)) / (2*a)
# x2 = (b+cmath.sqrt(d)) / (2*a)
# print('结果为{0}和{1}'.format(x1,x2))
"---三角形面积"
#S△=√〔p(p-a)(p-b)(p-c)〕 〔p=1/2(a+b+c)〕(海伦—秦九韶公式)
# a = float(input('输入三角形第一边长: '))
# b = float(input('输入三角形第二边长: '))
# c = float(input('输入三角形第三边长: '))
#
# # 计算半周长
# s = (a + b + c) / 2
#
# # 计算面积
# area = (s * (s - a) * (s - b) * (s - c)) ** 0.5
# print('三角形面积为 %0.2f' % area)
"---变换数据"
# x = input('输入x:')
# y = input('输入y:')
# x,y = y, x
# print('x={}'.format(x))
# print('y={}'.format(y))
"---闰年"
# import calendar
# year = int(input('请输入年份:'))
# print(calendar.isleap(year))
"---质数"
# num = int(input('请输入一个数字:'))
# if num > 1:
# for i in range(2,num):
# if (num%i==0):
# print(num, '不是质数')
# print('{}乘以{}是{}'.format(i,num
# break
# else:
# print(num, '是质数')
# else:
# print(num,'不是质数')
"输出指定范围内的素数"
# lower = int(input("输入区间最小值: "))
# upper = int(input("输入区间最大值: "))
#
# for num in range(lower, upper + 1):
# # 素数大于 1
# if num > 1:
# for i in range(2, num):
# if (num % i) == 0:
# break
# else:
# print(num)
"阶乘"
# num = int(input("请输入一个数字: "))
# factorial = 1
#
# # 查看数字是负数,0 或 正数
# if num < 0:
# print("抱歉,负数没有阶乘")
# elif num == 0:
# print("0 的阶乘为 1")
# else:
# for i in range(1, num + 1):
# factorial = factorial * i
# print("%d 的阶乘为 %d" % (num, factorial))
"九九乘法表"
# for i in range(1,10):
# for j in range(1,i+1):
# print('{}x{}={}'.format(j,i,i*j), end=" ")
# print()
"十进制转二进制、八进制、十六进制"
# dec = int(input('输入数字:'))
# print('二进制:', bin(dec))
# print('八进制:', oct(dec))
# print('十六进制:', hex(dec))
"最大公约数"
# def hcf(x, y):
# # 获取最小值
# if x > y:
# smaller = y
# else:
# smaller = x
#
# for i in range(1, smaller + 1):
# if ((x % i == 0) and (y % i == 0)):
# hcf = i
#
# return hcf
#
#
# # 用户输入两个数字
# num1 = int(input("输入第一个数字: "))
# num2 = int(input("输入第二个数字: "))
#
# print(num1, "和", num2, "的最大公约数为", hcf(num1, num2))
"最小公倍数"
# def lcm(x, y):
# # 获取最大的数
# if x > y:
# greater = x
# else:
# greater = y
#
# while (True):
# if ((greater % x == 0) and (greater % y == 0)):
# lcm = greater
# break
# greater += 1
#
# return lcm
#
#
# # 获取用户输入
# num1 = int(input("输入第一个数字: "))
# num2 = int(input("输入第二个数字: "))
#
# print(num1, "和", num2, "的最小公倍数为", lcm(num1, num2))
"日历"
# import calendar
#
# # 输入指定年月
# yy = int(input("输入年份: "))
# mm = int(input("输入月份: "))
#
# # 显示日历
# print(calendar.month(yy, mm))
"获取昨天时间"
# import datetime
# def getYesterday():
# today = datetime.date.today()
# oneday = datetime.timedelta(days=1)
# yesterday = today - oneday
# return yesterday
# # 输出
# print(getYesterday())
"约瑟夫生者死者小游戏"
"""
30 个人在一条船上,超载,需要 15 人下船。
于是人们排成一队,排队的位置即为他们的编号。
报数,从 1 开始,数到 9 的人下船。
如此循环,直到船上仅剩 15 人为止,问都有哪些编号的人下船了呢?
"""
# people={}
# for x in range(1,31):
# people[x]=1
# print(people)
# check=0
# i=1
# j=0
# while i<=31:
# if i == 31:
# i=1
# elif j == 15:
# break
# else:
# if people[i] == 0:
# i+=1
# continue
# else:
# check+=1
# if check == 9:
# people[i]=0
# check = 0
# print("{}号下船了".format(i))
# j+=1
# else:
# i+=1
# continue
# print(people)
"计时器"
# import time
#
# print('按下回车开始计时,按下 Ctrl + C 停止计时。')
# while True:
# try:
# input() # 如果是 python 2.x 版本请使用 raw_input()
# starttime = time.time()
# print('开始')
# while True:
# print('计时: ', round(time.time() - starttime, 0), '秒', end="\r")
# time.sleep(1)
# except KeyboardInterrupt:
# print('结束')
# endtime = time.time()
# print('总共的时间为:', round(endtime - starttime, 2), 'secs')
# break
"mysql数据库"
# import mysql.connector
# mydb = mysql.connector.connect(
# host="localhost",
# user="root",
# passwd="root123456",
# database="test"
# )
#mycursor = mydb.cursor()
# mycursor.execute("CREATE TABLE sites (name VARCHAR(255), url VARCHAR(255))")
#mycursor.execute('show tables')
#mycursor.execute("ALTER TABLE sites ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY")
"---插入数据"
# sql = "INSERT INTO sites (name, url) VALUES (%s, %s)"
# val = ("RUNOOB", "https://www.runoob.com")
# mycursor.execute(sql, val)
# mydb.commit() # 数据表内容有更新,必须使用到该语句
# print(mycursor.rowcount, "记录插入成功。")
"---插入多个数据"
# sql = "INSERT INTO sites (name, url) VALUES (%s, %s)"
# val = [
# ('Google', 'https://www.google.com'),
# ('Github', 'https://www.github.com'),
# ('Taobao', 'https://www.taobao.com'),
# ('stackoverflow', 'https://www.stackoverflow.com/')
# ]
# mycursor.executemany(sql, val)
# mydb.commit() # 数据表内容有更新,必须使用到该语句
# print(mycursor.rowcount, "记录插入成功。")
"---查询数据"
# mycursor.execute("SELECT * FROM sites")
# myresult = mycursor.fetchall() # fetchall() 获取所有记录
# for x in myresult:
# print(x)
"线程"
# import threading
# import time
# exitFlag = 0
# class myThread(threading.Thread):
# def __init__(self,threadID, name, counter):
# threading.Thread.__init__(self)
# self.threadID = threadID
# self.name = name
# self.counter = counter
# def run(self):
# print('开始线程:'+self.name)
# # 获取锁,用于线程同步
# threadLock.acquire()
# print_time(self.name, self.counter, 5)
# print('退出线程:', self.name)
# threadLock.release()
#
# def print_time(threadName, delay, counter):
# while counter:
# if exitFlag:
# threadName.exit()
# time.sleep(delay)
# print('{}:{}'.format(threadName,time.ctime(time.time())))
# counter -=1
#
# threadLock = threading.Lock()
# thread1 = myThread(1, "Thread-1", 1)
# thread2 = myThread(2, "Thread-2", 2)
# threads = []
# thread1.start()
# thread2.start()
# threads.append(thread1)
# threads.append(thread2)
# for t in threads:
# t.join()
# print('退出主线程')
"json解析"
# import json
#
# # Python 字典类型转换为 JSON 对象
# data = {
# 'no': 1,
# 'name': 'Runoob',
# 'url': 'http://www.runoob.com'
# }
#
# json_str = json.dumps(data)
# #print("Python 原始数据:", repr(data))
# print("JSON 对象:", json_str)
# print("PYTHON原始对象:", json.loads(json_str))