python 基础笔记

这篇博客详细介绍了Python的基础知识,包括变量、数据类型如元组、列表和字典的使用方法,以及基本操作和语法特性。适合初学者入门学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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//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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值