此文的脚本是根据
《《python基础》》_kali_yao的博客-优快云博客Python进阶_kali_yao的博客-优快云博客安装python 的包控制mysql的Python脚本与执行系统命令的Python脚本_kali_yao的博客-优快云博客Python 的电子邮件编程_kali_yao的博客-优快云博客
所写的示例
print("小明", '喜欢', 'Python', sep=' ')
print(1, 2, 3, 4)
print(1, 2, 3, 4, sep=' ', end='\n') # 上句等同于
print(1, 2, 3, 4, sep='------')
print('===================')
print(11, 22, 33, 44, end='') # '\n' 代表一个换行
print(55, 66, 77, 88, end='')
print(111111)
name = input('请输入您的名字: ')
# print(222222)
print('您刚才输入的名字是', name)
# 写一个程序 myprog.py
# 1. 让用户输入用户名
# 2. 让用户输入密码
# 3. 打印 谁谁谁 的密码是 xxx
name = input("请输入您的姓名:")
password = input('请输入您的密码:')
print(name, "的密码是", password)
print('1234') # 字符串
print(1234) # 数字
print('同学们好')
print("同学们好")
print('''同学们好''')
print("""同学们好""")
print("I'm a teacher")
print('''I'm a teacher! 我是"kali"''')
print('咏鹅\n鹅鹅鹅,\n曲项向天歌;\n白毛浮绿水,\n红掌拨清波。')
print("""咏鹅\n鹅鹅鹅,\n曲项向天歌;\n白毛浮绿水,\n红掌拨清波。""")
print('------------------------------------')
print('''咏鹅
鹅鹅鹅,
曲项向天歌;
白毛浮绿水,
红掌拨清波。''')
print('我是单引号\',我是双引号", 我是三单引号\'\'\', 我是三双引"""')
print("\"\"\" ''' \" \'*#")
# print('\a\b\c\d\e\f\\')
print("ABC\bD")
print('print("hello world")')
# 两个字符串拼接
print('今天是' + "7月13日")
print('今天是', "7月13日")
print('我想你了' * 100)
#! /usr/bin/python3
# 长方形的宽是 10 个 # 号
# 高是 4个 # 号
##########
# #
# #
##########
# 方法1
# print('''##########
# # #
# # #
# ##########''')
# 方法2
print('#' * 20)
print('#' + ' ' * 18 + '#')
print('#' + ' ' * 18 + '#')
print('#' * 20)
# 方法3
print('#' * 10,
'#' + ' ' * 8 + '#',
'#' + ' ' * 8 + '#',
'#' * 10, sep='\n')
# 现在是 18:02:31 秒 请问现在距离 凌晨 0:0:0 过了多少秒?
# 写程序打印出来
hour = 18 # 小时
minute = 2 # 分钟
second = 31 # 秒
# 计算距离凌晨 0:0:0过了多少秒
s = hour * 60 * 60 + minute * 60 + second
print('凌晨 0:0:0过了', s, '秒')
# 已知从凌晨 0:0:0 到现在已经过了 63320 秒,
# 请问现在是 几时几分几秒?
s = 63320
hour = s // 60 // 60 # 计算小时
minute = s // 60 % 60 # 计算分钟
second = s % 60 # 计算秒数
print(hour, ":", minute, ":", second, sep='')
# 写程序,输入您的年龄, 打印出去年你几岁,明年你几岁
# 用 str(x) , int(x), float(x), bool(x)
age = input('请输入年龄: ')
last_year = int(age) -1
print('去年你', last_year, '岁')
# print('去年你', int(age)-1, '岁')
print('明年你', int(age)+1, '岁')
# 写一个程序,输入一个整数, 判断这个整数是奇数还是偶数
# 奇数: 1 3 5 7 9
# 偶数: 2 4 6 8 10
# x % 2 == 1 结果为Ture,x 一定是奇数
# x % 2 == 1 结果为False,x 一定是偶数
s = input('输入一个整数:')
x = int(s) # 把 s 转化为整数交给 x 绑定
if x % 2 == 1:
print(x, '是奇数')
else:
print(x, '是偶数')
# 写一个程序,输入一个整数,用程序判断
# 这个整数是正数,负数,还是零
number = int(input('请输入一个整数:'))
if number > 0:
print(number, '是正数')
elif number < 0:
print(number, '是负数')
else:
print(number, '是零')
# 写一个程序,输入一个整数,用程序判断
# 这个整数是正数,负数,还是零
number = int(input('请输入一个整数:'))
if number > 0:
print(number, '是正数')
if number < 0:
print(number, '是负数')
if number == 0:
print(number, '是零')
# 写一个程序, 06_input_score.py, 输入一个学生的成绩,
# 如果成绩在 60~100 之间提示"及格", 否则提示不及格
score = int(input('请输入成绩: '))
# if 60 <= score <= 100:
if score >= 60 and score <= 100:
print('及格')
else:
print('不及格')
# 写一个程序, 07_input_score.py, 输入一个学生的成绩,
# 如果成绩在 [0,60) 提示"不及格"
# 如果成绩在 [60,80) 提示"及格"
# 如果成绩在 [80,90) 提示"良好"
# 如果成绩在 [90,100] 提示"优秀"
# 如果是其他值,则提示“您的输入有误”
score = float(input('请输入您的成绩: '))
if 0 <= score < 60:
print('不及格')
elif 60 <= score < 80:
print('及格')
elif 80 <= score < 90:
print('良好')
elif 90 <= score <= 100:
print('优秀')
else:
print('您的输入有误')
# 如果 成绩在 0~100 什么都不做, 其他提示"您的输入有误"
score = int(input('请输入成绩:'))
if 0 <= score <= 100:
pass
else:
print('您的输入有误!')
# 商场促销, 满100 减 20, 写一个程序,输
# 入商品的价格,打印出实际支付金额
price = float(input('请输入价格: '))
pay = price - 20 if price >= 100 else price
# if price >= 100:
# pay = price - 20
# else:
# pay = price
print('您需要支付:', pay, '元')
print('hello world')
score = 83
b = 60 <= score <= 100
print(b)
# BMI (Body Mass Index) 身体质量指数
# 公式:
# BMI= 体重 (公斤) / 身高的平方
# 如: 魏老师 体重 69公斤, 身高 1.73米
# BMI = 69 / 1.73 ** 2
# 要求: 输入体重和身高,给出体重建议
weight = float(input('请输入体重(kg): '))
height = float(input('请输入身高(m):'))
bmi = weight / (height ** 2)
print('bmi=', bmi)
if bmi < 18.5:
print('体重过轻!')
elif 18.5 <= bmi <= 24:
print('正常体重')
else: # elif bmi > 24:
print('体重过重!!')
# 北京的出租车计价器的规则
# 3公里以内 收费 13元 起步价
# 3公里以外, 每公里加收 2.3 元(又称单价)
# 超过 15 公里以后, 每公里再加收单价的 50% (1.15元) 的空驶费
# 要求: 输入公里数,打印出费用的金额
# 课间休息 10:11 回来
km = float(input('请输入公里数: '))
fee = 0
# 方法2
if km > 0:
fee = fee + 13
# 计算多余3公里以外的钱数
if km > 3:
fee = fee + (km - 3) * 2.3
# 计算多余15公里以外的钱数
if km > 15:
fee = fee + (km - 15) * 1.15 # 2.3*.5
# 方法1
# if 0 < km <= 3:
# fee = 13
# elif 3 < km <= 15:
# fee = 13 + (km - 3) * 2.3
# elif km > 15:
# fee = 13 + (km - 3) * 2.3 + (km - 15) * 2.3 * .5
print('金额', fee, '元')
# 写程序,输入一个字符, 打印字符串的如下内容
# 1. 打印这个字符串的第一个字符
# 2. 打印这个字符串的最后一个字符串
# 3. 如果这个字符串的长度是 奇数,则打印中间这个字符
# 用 len(x) 求字符串的长度
content = input('请输入文字:')
print("第一个字符是", content[0])
print("最后一个字符是", content[-1])
length = len(content)
if length % 2 == 1:
print('中间的字符是:', content[int(length // 2)])
# 输入一个字符串, 判断这个字符串是否是回文
# 上海自来水来自海上
# ABCCBA
# 13531
s = input('请输入一段文字: ')
s2 = s[::-1]
if s == s2:
print('是回文')
else:
print('不是回文')
# 写一个程序:
# 输入一个字符串
# 输入一个浮点数
# 输入一个整数
# 输出: 全为10个字节宽度的字符串如下:
# 如:
# 请输入字符串: weimz
# 请输入浮点数: 3.14
# 请输入整数: 99
# 打印如下:
# +------------+
# | weimz |
# | 3.14 |
# | 0000000099 |
# +------------+
s = input('请输入字符串: ')
f = float(input('请输入浮点数: '))
d = int(input('请输入整数: '))
# 打印图形
print('+------------+')
print('| %-10s |' % s)
print('| %10.2f |' % f)
print('| %010d |' % d)
print('+------------+')
# 写一个程序,输入一个路径
# 1) 打印出这个路径是否是在 / root 文件夹下
# 2) 判断您的文件是否是.sh 文件
# 3) 如果是.sh 文件,如 xxx.sh, 则打印文件名 xxx
# 如:
# 请输入: /root/bin/abcd.sh
# 1. 在 / root 下
# 2. 是.sh 文件
# 3. 文件名是: xxx
# 请输入: / etc / ABCD.SH
# 1. 不在 / root 下
# 2. 是.sh 文件
# 3. 文件名是: ABCD
s = input('请输入一个路径:') # /root/bin/abcd.sh
# 判断是否以 ‘/root’开头
if s.startswith('/root'):
print('在 /root下')
else:
print('不在/root下')
# 判断是否以 '.sh'结尾
if s.endswith('.sh') or s.endswith('.SH'): # 课间休息: 16:27 回来
print('是.sh 文件')
# 找文件名
pos = s.rindex('/') # 找到 / 的位置
print('文件名是:', s[pos+1:-3])
else:
print('不是.sh 文件')
# 写一个程序,输入一个整数n, 打印 n 行 hello world
n = int(input('请输入一个整数: '))
i = 1
while i <= n:
print('hello world')
i = i + 1 # i += 1 # 每次执行,i 会增大1
else:
print('while 里的 else ')
# 写一个程序,输入一个整数,写程序打印如下 n 行文字
# 如:
# 请输入: 10
# 这是第 1 行
# 这是第 2 行
# 这是第 3 行
# ...
# 这是第 10 行
n = int(input('请输入一个整数: '))
i = 1
while i <= n:
print('这是第', i, '行')
i += 1 # 等同于 i = i + 1
# 写一个程序 打印1~20 的整数, 打印在 1 行内 每个数字之间用一个空格分隔开
# 1 2 3 4 5 ... 19 20
# 提示: print(x, end=' ')
# 打印 1 2 3 4 5 6 ... 19 20
i = 1
while i <= 20:
print(i, end=' ')
i += 1
else:
print() # 换行
# 写一个程序 打印1~20 的整数, 打印在 1 行内 每个数字之间用一个空格分隔开
# 1 2 3 4 5 ... 19 20
# 提示: print(x, end=' ')
j = 1
while j <= 10:
# print('1 2 3 4 5 ..... 19 20')
# 打印 1 2 3 4 5 6 ... 19 20
i = 1
while i <= 20:
print(i, end=' ')
i += 1
else:
print() # 换行
j += 1
# 写程序,输入一个整数n , 代表结束的整数, 计算
# 1 + 2 + 3 + 4 + ..... + n 的和
# 请输入: 100
# 5050
# # 提示:
# he = 0 # 用一个变量来记录这个和
n = int(input('请输入一个整数: '))
i = 1
total = 0 # total 变量,用于累计 i 的值
while i <= n:
total += i # print(i)
i += 1
print('和是', total) # tab-->
# shift + tab <---
# 打印 1~ 20 的整数, 每行打印 5 个, 打印 四行, 如:
# 1 2 3 4 5
# 6 7 8 9 10
# ...
# 16 17 18 19 20
# # 提示: print() 换行
i = 1
while i <= 20:
print('%2d' % i, end=' ')
if i % 5 == 0:
print()
i += 1
print() # 换行
# 已知, 局域网的IP 都是: 192.168.0.xxx
# 写程序,生成 从 192.168.0.1 ~ 192.168.0.254 区间的 254 个 IP 地址
ip_format = '192.168.0.%d'
number = 1
while number <= 254:
print('192.168.0.' + str(number)) # print(ip_format % number
# 写一个程序,输入三行文字, 按最长的一行, 打印如下图形方框
# 请输入: hello
# 请输入: welcome to beijing
# 请输入: aaaaaaa
# 打印:
# +--------------------+
# | hello |
# | welcome to beijing |
# | aaaaaaa |
# +--------------------+
# 提示: str.center(width)
s1 = input('请输入第一行: ') # ctrl + d
s2 = input('请输入第二行: ')
s3 = input('请输入第三行: ')
# 求取三个字符的长度:
len1 = len(s1)
len2 = len(s2)
len3 = len(s3)
# 第三方法
maxlen = max(len1, len2, len3)
# 第二方法
maxlen = len1
if len2 > maxlen:
maxlen = len2
if len3 > maxlen:
maxlen = len3
print('最大值是', maxlen)
# 第一方法
# if len1 > len2:
# # len1 大
# if len1 > len3:
# maxlen = len1 # maxlen用于保存最大值
# else:
# maxlen = len3
# else:
# # len2 大
# if len2 > len3:
# maxlen = len2 # maxlen用于保存最大值
# else:
# maxlen = len3
line1 = '+-' + '-' * maxlen + '-+'
# 打印第一行
print(line1)
# 打印中间的三行
line2 = '| ' + s1.center(maxlen) + ' |'
print(line2)
line3 = '| ' + s2.center(maxlen) + ' |'
print(line3)
line4 = '| ' + s3.center(maxlen) + ' |'
print(line4)
# 打印最后一行
print(line1)
i = 1
while i <= 5:
print(i)
if i == 2:
break
i += 1
else:
print('while 语句里的 else字句被执行!')
print('程序结束')
# 写程序, 任意输入一些正整数, 当输入负数时结束输入,当输入完成后,打印您输入的这些正整数的和
# 如:
# 请输入: 1
# 请输入: 2
# 请输入: 3
# 请输入: 4
# 请输入: -1
# 您刚才输入的正整数之和是: 10
total = 0 # 用于求和
while True:
n = int(input('请输入:'))
if n < 0:
break
total += n
print('和是', total)
s = 'ABCDE'
for ch in s:
print('ch=', ch)
else:
print('for 里的 else 字句被执行,ch=', ch)
# 写一个程序,输入一个任意长度的字符串,用for 语句找出这个字符串中有几个英文的等号(=)
# 注: 不允许使用 str.count 方法
# 如:
# 请输入: a = b = c = 100
# 结果: 3
s = input('请输入: ')
count = 0 # 用于计数
for ch in s:
if ch == '=':
count += 1
print('结果是:', count)
# 用 for 语句 打印 1~20 的整数,打印在一行内
# 1 2 3 4 .... 19 20
for x in range(1, 21):
print(x, end=' ')
print() # 换行
# 写程序,计算 1 + 3 + 5 + 7 + ..... + 97 + 99 的和
# 分别用 for 循环和 while 实现。
# 用 for 实现。
total = 0
for x in range(1, 100, 2):
total += x
print('和是', total)
# 用 while 实现。
total = 0
x = 1
while x < 100:
total += x
x += 2
print('和是', total)
# 用 sum 函数
print('和是', sum(range(1, 100, 2)) )
for x in range(5):
if x % 2 == 1:
continue
print(x)
print('======================================')
x = 0
while x < 5:
if x % 2 == 1:
x += 1
continue
print(x)
x += 1
# 假设一个用户信息如下:
# 用户名是:root
# 密码是: 123456
# 写一个身份验证的程序,让用户输入用户名和密码登录, 用户名和密码全部匹配,提示登录成功。
# 否则继续,最多尝试3次。3次不匹配以后提示登录失败.
# 导入 getpass 模块
import getpass
for times in range(3):
username = input('请输入用户名:')
# password = input('请输入密码:')
password = getpass.getpass('请输入密码:') # 课间休息:15:24 回来
if username != 'root' or password != '123456':
print('信息错误!')
continue
else:
print('登陆成功!')
break
else:
print('登陆失败!')
# 写一个程序, 用列表保存用户输入的数据
# 1. 让用户输入4个任意的整数,放入列表
# 2. 在第三个整数前面插入一个100
# 3. 删除列表中的第4个整数
# 4. 将之前输入的第二个整数加上1 后放回原处
# 5. 打印现在的列表
# 1. 让用户输入4个任意的整数,放入列表
# 方法1
# a = int(input('请输入:'))
# b = int(input('请输入:'))
# c = int(input('请输入:'))
# d = int(input('请输入:'))
# L = [a, b, c, d]
# 方法2
L = []
for _ in range(4):
x = int(input('请输入: '))
L.append(x)
# 2. 在第三个整数前面插入一个100
L.insert(2, 100)
# 3. 删除列表中的第4个整数
del L[3]
# 4. 将之前输入的第二个整数加上1 后放回原处
L[1] += 1
# 5. 打印现在的列表
print(L)
# 写程序,输入任意行文字。当没有输入的时候时结束,
# 将所有输入的字符串先保存在一个列表L1中 ,
# 将L1 中的字符串的长度都计算出来,存入列表L2 中
# 1) 然后打印最长的字符串的字符个数
# 2) 打印最长的那个字符串
# 如:
# 请输入: hello
# 请输入: abcdef
# 请输入: a
# 请输入: <直接回车结束输入>
# 打印:
# 最长的字符个数是: 5
# 最长的字符串是: abcdef
# L1 = ['hello', 'abcdef', 'a']
# L2 = [5, 6, 1]
# mymax = 6 # 求出最长的字符串的长度
# pos = L2.index(6) # 求出最长的字符串的位置
# ...
L1 = []
while True:
s = input('请输入:')
if s == '':
break
L1.append(s)
# 计算 L1 中字符串的长度放在 L2 中
L2 = [len(s) for s in L1]
# L2 = []
# for s in L1:
# L2.append(len(s))
print('L1=', L1)
print('L2=', L2)
mymax = max(L2) # 求最长的字符串的长度
pos = L2.index(mymax) # 求最长的字符串的索引
print('L2中最大数的索引是:', pos)
print('您输入的最长的字符串是:', L1[pos])
# 写程序,输入一个整数,打印如下的正方形
# 如:
# 请输入: 4
# 打印:
# 1 2 3 4
# 1 2 3 4
# 1 2 3 4
# 1 2 3 4
# 请输入: 5
# 打印:
# 1 2 3 4 5
# 1 2 3 4 5
# 1 2 3 4 5
# 1 2 3 4 5
# 1 2 3 4 5
n = int(input('请输入: '))
for y in range(1, n + 1):
# 打印一行
for x in range(1, n+1):
print(x, end=' ')
print() # 换行
# 请输入: 4
# 打印:
# 1 2 3 4
# 1 2 3 4
# 1 2 3 4
# 1 2 3 4
# 写程序,输入一个整数,打印如下的正方形
# 如:
# 请输入: 4
# 打印:
# 1 2 3 4
# 2 3 4 5
# 3 4 5 6
# 4 5 6 7
# 请输入: 5
# 打印:
# 1 2 3 4 5
# 2 3 4 5 6
# 3 4 5 6 7
# 4 5 6 7 8
# 5 6 7 8 9
n = int(input('请输入: '))
for x in range(1, n+1):
# print(x) # <===== 替换他
for y in range(x, x + n):
print(y, end=' ')
print() # 换行
# 已知, 局域网的IP 都是: 192.168.xxx.yyy
# xxx 从 0 ~ 9, yyy 从 1 ~ 254
# 写程序,生成 从 192.168.0.1 ~ 192.168.10.254 区间的 2540 个 IP 地址
# # 提示用循环嵌套
ips = []
for xxx in range(0, 10):
for yyy in range(1, 255):
ip = '192.168.%d.%d' % (xxx, yyy)
# ip = '192.168.' + str(xxx) + '.' + str(yyy)
# print(ip)
ips.append(ip)
print(ips)
# 写程序,输入任意行文字。当没有输入的时候时结束,
# 将所有输入的字符串先保存在一个列表L1中 ,
# 将L1 中的字符串的长度都计算出来,存入列表L2 中
# 1) 然后打印最长的字符串的字符个数
# 2) 打印最长的那个字符串
# 如:
# 请输入: hello
# 请输入: abcdef
# 请输入: a
# 请输入: <直接回车结束输入>
# 打印:
# 最长的字符个数是: 5
# 最长的字符串是: abcdef
# L1 = ['hello', 'abcdef', 'a']
# L2 = [5, 6, 1]
# mymax = 6 # 求出最长的字符串的长度
# pos = L2.index(6) # 求出最长的字符串的位置
# ...
L1 = []
while True:
s = input('请输入:')
if s == '':
break
L1.append(s)
# 计算 L1 中字符串的长度放在 L2 中
L2 = [len(s) for s in L1]
# L2 = []
# for s in L1:
# L2.append(len(s))
print('L1=', L1)
print('L2=', L2)
mymax = max(L2) # 求最长的字符串的长度
pos = L2.index(mymax) # 求最长的字符串的索引
print('L2中最大数的索引是:', pos)
print('您输入的最长的字符串是:', L1[pos])
# 写程序, 输入一个整数n,打印 宽度为n 的正方形
# 如:
# 请输入: 4
# 打印:
# ####
# # #
# # #
# ####
# 请输入: 5
# 打印:
# #####
# # #
# # #
# # #
# #####
n = int(input('请输入: '))
# 计算第一行
line1 = '#' * n
print(line1)
# 计算第二行
line2 = '#' + ' ' * (n-2) + '#'
# 打印中间的 n-2行
for _ in range(n-2):
print(line2)
# 打印最后一行
if n >= 2:
print(line1)
# 写一个程序,输入任意行文字,当输入为空字符串时结束输入,将所有的字符串以最长的字符串宽度打印如下方框
# 请输入: hello
# 请输入: hello world
# 请输入: <回车输入结束>
# +-------------+
# | hello |
# | hello world |
# +-------------+
L1 = [] # 用于用户输入的字符串
L2 = [] # 用于存储字符的长度
while True:
s = input('请输入: ') # hello中国 # 宽度为9, len(s) --> 7
if s == '':
break
L1.append(s)
L2.append(len(s))
max_width = max(L2) # 求最大的长度
# 打印第一行
line1 = '+-' + '-' * max_width + '-+'
print(line1)
# 再打印其他的 len(L1) 行
for s in L1:
aline = '| ' + s.center(max_width) + ' |'
print(aline)
# 再打印最后一行
print(line1)
# +-------------+
# | hello |
# | hello world |
# +-------------+
# 创建一个函数
def say_hello():
print('hello world')
print('hello china')
print('hello tarena')
say_hello() # 调用一次
say_hello() # 调用第二次
# 写一个函数 mymax, 此函数接受两个数据,打印出最大的一个
def mymax(a, b):
if > b:
print(a)
else:
print(b)
mymax(100, 200)
mymax(999, 111)
mymax('ABC', 'AAA')
# 写一个函数 myadd, 此函数传入两个参数, x, y
# 次函数的功能是打印 x + y 的和:
# def myadd(......):
# ....
#
# myadd(100, 200) # 300
# myadd('ABC', '123') # ABC123
def myadd(x, y):
print(x + y)
myadd(100, 200) # 300
myadd('ABC', '123') # ABC12
x = 100
def mysum(a, b):
x = a + b
z = a * b
print('x=', x) # 5
print('z=', z) # 6
mysum(2, 3)
print(x) # 100
print(z) # 报错
def myadd(x, y):
print(x + y)
z = myadd(100, 200) # 函数调用是表达式还是语句
print('z=', z) # z=None
def say_hello():
print("hello aaa")
print("hello bbb")
return # 等同于 return None
# return [1, 2, 3, 4]
print("hello ccc")
result = say_hello()
print('result=', result)
# 写一个函数 myadd, 实现给出两个数,返回这两个数的和
# 如:
# def myadd(x, y):
# ....
# a = int(input("请输入第一个数: "))
# b = int(input("请输入第二个数: "))
# print('您输入的两个数之和是:', myadd(a, b))
def myadd(x, y):
return x + y
a = int(input("请输入第一个数: "))
b = int(input("请输入第二个数: "))
print('您输入的两个数之和是:', myadd(a, b))
def myfun1(a, b, c):
print('a=', a)
print('b=', b)
print('c=', c)
# 位置传参
myfun1(1, 2, 3)
# 关键字传参
myfun1(b=22, c=33, a=11)
myfun1(c=666, a=444, b=555)
# 混合传参
myfun1(100, c=300, b=200)
# 以下做法是错误的?
myfun1(b=20, a=10, 30)
# 写一个函数 myadd2, 实现给出四个数,返回这四个数的和
# 如:
# def myadd(...):
# ....
# a = int(input("请输入第一个数: "))
# b = int(input("请输入第二个数: "))
# c = int(input("请输入第三个数: "))
# d = int(input("请输入第四个数: "))
# print('您输入的四个数之和是:', myadd(a, b, c, d))
def myadd(a, b, c=0, d=0):
return a + b + c + d
# a = int(input("请输入第一个数: "))
# b = int(input("请输入第二个数: "))
# c = int(input("请输入第三个数: "))
# d = int(input("请输入第四个数: "))
# print('您输入的四个数之和是:', myadd(a, b, c, d))
print(myadd(1, 2))
print(myadd(1, 2, 3))
print(myadd(1, 2, 3, 4))
def myadd4(a, b, c=0, d=0):
return a + b + c + d
print(myadd4(1, 2))
print(myadd4(1, 2, 3))
print(myadd4(1, 2, 3, 4))
def myfunc2(*args):
print("len(args)=", len(args))
print('args=', args)
# myfunc2()
myfunc2(1, 2, 3)
myfunc2(11, 22, 33, 44, 55)
def myfunc3(a, b, *args):
print(a, b, args)
myfunc3(11, 22)
myfunc3(1, 2, 3, 4, 5) # 1-->a, 2-->b, (3,4,5)-->args
def myfunc4(a, b, *args, c, d):
print(a, b, 'args=', args, c, d)
myfunc4(11, 22, 33, 44, d=200, c=100)
myfunc4(11, 22, c=33, d=44)
myfunc4(b=2, a=1, d=4, c=3)
def myfunc(a, b, *args, c, d, **kwargs):
print(a, b, 'args=', args, c, d, 'kwargs=', kwargs)
myfunc(1, 2, 3, 4, c=11, d=22, e=33, f=44)
myfunc(1, 2, 3, 4, c=11, d=22)
def fa(a, b):
c = a + b
print(a, b, c)
fa(2, 3)
# print(a, b, c) # 报错
a = 100 # 全局变量
def fx(b, c): # b,c 局部变量
d = b + c # d 局部变量
a = 999 # 创建一个名字为a 的局部变量
print(a, b, c, d)
fx(200, 300)
print('全局的 a=', a)
# 如何用一个变量来记录一个函数调用的次数
count = 0
def hello(name):
# global name # 函数的形参已经时局部变量,不能用 global 声明为全局变量
print('hello', name)
global count # 声明 count 是全局变量,不是局部变量
count = count + 1 # count += 1
hello('小张')
hello('小李')
# ...
hello('老魏')
print('您共调用hello函数', count, '次') # 2 次
# def myadd(x, y):
# return x + y
myadd = lambda x, y: x + y
print('1 + 2 =', myadd(1, 2)) # 3
# 写一个程序: 输入一个整数,代表树干的高度,打印如下圣诞树
# 请输入: 3
# 打印:
# *
# ***
# *****
# $
# $
# $
# 请输入: 4
# 打印:
# *
# ***
# *****
# *******
# $
# $
# $
# $
n = int(input('请输入: ')) # 3
def print_tree(n):
# 1. 打印树叶部分
for line in range(1, n+1): # line 代表行号
# print('行:', line)
# 计算每一行的星号的个数s
stars = 2 * line - 1 # 代表星号的个数
# 计算每一行空格的个数
blanks = n - line
aline = ' ' * blanks + '*' * stars
print(aline)
# 2. 打印树干部分
for _ in range(n):
aline = ' ' * (n-1) + '$'
print(aline)
print_tree(n) # 打印 树干高度为 n 的树
# print_tree(5) # 打印 树干高度为 5 的树
# 写一个函数
# myrange
# 实现和
# range
# 一样的功能, 但返回列表
#
#
# def myrange(start, stop=None, step=None):
# return range(start, stop, step)
#
#
# if stop == None: # 这是一个参数
# return list(range(0, start))
# ...
# 此处自己完成
#
# for x in myrange(4):
# print(x) # 0, 1, 2, 3
def myrange(start, stop=None, step=None):
# 1. 确定开始, start, 结束 stop 和 步长 step 三个值
if stop is None: # 没有第二个参数
stop = start
start = 0
if step is None: # 确定第三个参数
step = 1
L = []
# 2. 生成相应的数字,放入列表
# 3. 考虑 step 是正数还是负数作相应的处理
if step > 0:
i = start
while i < stop:
L.append(i) # 把生成的i 追加到列表中
i += step
elif step < 0:
i = start
while i > stop:
L.append(i)
i += step
return L
for x in myrange(4): # for x in [0, 1, 2, 3]
print(x) # 0, 1, 2, 3
print('=============')
for x in myrange(3, 6): # for x in [3, 4, 5]
print(x) # 3, 4, 5
print('=============')
for x in myrange(1, 10, 2): # for x in [1, 3, 5, 7, 9]
print(x) # 1, 3, 5, 7, 9
print('---------------')
for x in myrange(5, 0, -2): # for x in [5, 3, 1]
print(x)
# 高阶函数
def fa(a, b): # fa的b参数必须接收一个函数作为参数,fa是高阶函数
x = b(a)
print('x=', x)
fa([1, 2, 3, 4], sum)
fa([1, 2, 3, 4], len)
fa([1, 2, 3, 4], lambda L:L[1] + L[2])
def fx(L):
return L[0] + L[-1]
fa([1, 2, 3, 4], fx)
# 写一个程序,求
# 1 + 4 + 9 + 16 + .... 10000
# 1**2 + 2**2 + 3**2 + .... 100**2
# 的和
def power2(x):
return x ** 2
# range(1, 5) [1, 2, 3, 4]
# map(power2, range(1, 5)) [1, 4, 9, 16]
for x in map(power2, range(1, 5)):
print(x)
print(sum(map(power2, range(1, 101))))
print(sum(map(lambda x:x**2, range(1, 101))))
# 写一个程序,把列表 L 中的奇数 挑选出来,形成一个新的列表 L2
L = [8, 5, 2, 1, 8, 6, 9, 7]
# 3. 用lambda 和 list 函数组合使用
L2 = list(filter(lambda x: x % 2 == 1, L))
# 2. 用 filter 函数实现
# L2 = []
# def is_odd(x):
# return x % 2 == 1
# for x in filter(is_odd, L):
# L2.append(x)
# 1. 用循环来实现
# for x in L:
# if x % 2 == 1:
# L2.append(x)
print("L2=", L2)
# 写一个程序。输入一些学生的成绩,当输入
# 负数时结束, 把不及格的学生成绩打印出来
scores = []
while True:
s = int(input('请输入分数: '))
if s < 0:
break
scores.append(s)
print('原始的成绩:', scores)
bujige = list(filter(lambda x:x<60, scores))
print('不及格的分数有', bujige)
L = [5, -2, 4, -3, 1]
# 参考值 [5, 2, 4, 3, 1]
L2 = sorted(L) # 升序
print('升序后', L2)
L3 = sorted(L, reverse=True) # 降序
print('降序后', L3)
# 能否按着绝对值进行排序成 [1, -2, -3, 4, 5] ???
# L4 = sorted(L, key=abs) # key=lambda x: -x if x < 0 else x
L4 = sorted(L, key=lambda x: -x if x < 0 else x)
print('按绝对值排序后', L4) # 课间休息: 15:10 回来
L5 = sorted(['hello', '123', 'beijing'])
print(L5)
L6 = sorted(['hello', '123', 'beijing'], key=len)
print(L6)
L7 = sorted(['hello', '123', 'beijing'], key=len, reverse=True)
print(L7)
def fxxx(x):
if x < 0:
return True
else:
return False
lambda x: True if x < 0 else False
# file: 08_test_mod.py
# 小李写的程序,小李想调用 小张写的 mymod.py
# 里的两个函数和两个字符串
# 1. 用 import 语句导入 mymod, 整体导入
import mymod
print(mymod.name1) # audi
print(mymod.name2) # tesla
mymod.mysum(100)
mymod.myadd(100, 200)
# 2. 用 from 模块 import xxx 语句导入 模块内部的某个属性
from mymod import name1, myadd
print('mymod.name1=', name1)
myadd(99, 1)
# 3. 用 from 模块 import * 语句导入某个模块内部全部的属性
from mymod import *
mysum(100)
print(name1)
print(name2)
# 写一个程序, 生产6位由数字组成的随机密码
import random
def get_random_password():
s = ''
for _ in range(6): # 循环六次
s += str(random.randint(0, 9))
return s
print(get_random_password())
print(get_random_password())
import time
print("hello")
time.sleep(10) # 让程序睡眠10秒
print('world')
# file: mymod.py
'''
小张写了一个模块,内部有两个函数,两个字符串
... 此处省略 200字
'''
name1 = 'audi'
name2 = 'tesla'
def mysum(n):
'''
此函数用来求和
by weimingze
'''
print("正在计算, 1 + 2 + 3 + .... + n的和 ")
def myadd(a, b):
print(a, '+', b, '=', a+b)
# 写一个猜拳游戏: 石头,剪刀,布,
# 让电脑随机生成一个,
# 你的输入如下:
# 0) 石头
# 1) 剪刀
# 2) 布
# q) 退出
# 请选择: 0
# 电脑出的是 布 ,你输了
# 循环输入,知道输入q 为止
import random
def show_menu():
print(' 0) 石头 ')
print(' 1) 剪刀 ')
print(' 2) 布 ')
print(' q) 退出 ')
signals = ['石头', '剪刀', '布']
def compare(computer_signal, your_signal): # 用于评判
'''
:param computer_signal: 电脑的手势
:param your_signal: 有的手势
:return: None
'''
if computer_signal == your_signal:
print('平手')
elif computer_signal == '石头' and your_signal == '剪刀':
print('电脑出的是', computer_signal, '你输了')
elif computer_signal == '石头' and your_signal == '布':
print('电脑出的是', computer_signal, '你赢了')
elif computer_signal == '剪刀' and your_signal == '布':
print('电脑出的是', computer_signal, '你输了')
elif computer_signal == '剪刀' and your_signal == '石头':
print('电脑出的是', computer_signal, '你赢了')
elif computer_signal == '布' and your_signal == '剪刀':
print('电脑出的是', computer_signal, '你赢了')
elif computer_signal == '布' and your_signal == '石头':
print('电脑出的是', computer_signal, '你输了')
def main(): # 此函数用于运行主程序
while True:
show_menu()
s = input('请选择: ')
if s == 'q':
return
computer_select = random.choice(signals)
your_select = signals[int(s)]
compare(computer_select, your_select)
main()
# 写一个猜数字游戏 让电脑随机生成一个 0 ~ 100 的整数让用来猜
# 如果 您输入的数大于电脑生产的数,提示:“您猜大了”, 继续猜
# 如果 您输入的数小于电脑生产的数,提示:“您猜小了”, 继续猜
# 当 您输入的数等于电脑生产的数,提示:"恭喜您猜对了" 打印猜的次数后退出程序
import random
def guess_number():
x = random.randint(0, 100) # 电脑生成的数x
count = 0 # 记录次数
while True:
y = int(input('请输入:'))
count += 1
if y > x:
print('您输入大了')
elif y < x:
print('您输入小了')
else:
print('恭喜您猜对了!')
break
print('您共猜了', count, '次')
guess_number()
signals = ['石头', '剪刀', '布']
try: # 课间休息: 11:15 回来
x = int(input("请输入一个整数:")) # int('一百')
print('您猜的是', signals[x])
print('hello world!')
except ValueError as err:
print('int 函数发生了错误,错误已经解决,err=', err)
x = 0
except IndexError:
print('您猜的数字超出了范围,无法正确执行, 请重新输入!')
print('x=', x)
print('程序正常结束')
try:
x = int(input("请输入一个整数:")) # int('一百')
print('hello world!')
except ValueError as err:
x = 0
else:
print('try 语句内部没有发生错误!')
finally:
print('我是finally 子句,我无论如何都会执行')
print('x=', x)
print('程序正常结束')
signals = ['石头', '剪刀', '布']
try:
x = int(input("请输入一个整数:")) # int('一百')
print(signals[x]) # 可能会产生 IndexError 类型的错误
print('hello world!')
except ValueError as err:
x = 0
else:
print('try 语句内部没有发生错误!')
finally:
print('我是finally 子句,我无论如何都会执行')
print('x=', x)
print('程序正常结束')
# 写一个函数, get_score 函数,读取用户输入的整数成绩,
# 成绩的正常值是0~100 之间, 要求, 如果不在0~100 之间
# 报 ValueError类型的错误
def get_score():
x = int(input('请输入成绩:'))
if 0 <= x <= 100:
return x
raise ValueError('用户输入的成绩不在 0~100之间!')
try:
s = get_score()
print('用户输入的成绩是:', s)
except ValueError:
print('您的输入有误!')
准备文件
cat data.txt
1
2
3
4cat hello.txt
ABC中文
cat mynode.txt
我有一个朋友叫小芳
cat mynode2.txt
ABC
123
abccat mynode3.txt
1234567890ABCDE
cat prog
#! /usr/bin/python3
import sys
# ./myprog weimingze
print(sys.argv) # ['./myprog', 'weimingze']# 1. 打开文件 try: myfile = open('./hello.txt', 'rt') # myfile = open('/etc/passwd') # 2. 读/写文件 s = myfile.read() # 3. 关闭文件 myfile.close() print('文件中的内容是:', s) except OSError: print('文件打开失败')
# 1. 打开文件 try: myfile = open('./hello.txt', 'rb') # 2. 读/写文件 b = myfile.read() # 3. 关闭文件 myfile.close() print('文件中的内容是:', b.decode()) except OSError: print('文件打开失败')
# 打开一个文件,写入我的情书 file = open('./mynote.txt', 'w') # 以文本形式写入文件 file.write('我有一个朋友叫小芳') file.close() file2 = open('./mynote2.txt', 'wb') # 以字节串形式写入文件 file2.write(b'ABC\n123\nabc') file2.close()
# 1. 写一个程序,输入任意个正整数,当输入负数是结束输入, # 将输入的正整数写入文件data.txt 中 # 如: # 请输入: 1 # 请输入: 2 # 请输入: 3 # 请输入: 4 # 请输入: -1 # 文件中的内容是: # 1 # 2 # 3 # 4 file = open('data.txt', 'w') # 读取输入 while True: s = input('请输入') number = int(s) if number < 0: break file.write(str(number)) file.write('\n') # 写一个换行 file.close()
file = open('data.txt') total = 0 while True: # 循环读取文件 aline = file.readline() # 读取一行 '1\n' if aline == '': break s = aline[:-1] # 去掉'\n' total += int(s) print("和是", total) file.close()
# myfile = open('/etc/passwd') # s = myfile.read() # myfile.close() # myfile = open('/etc/passwd') with open('/etc/passwd') as myfile: s = myfile.read() print('文件中的内容是:', s)
# 定义一个生成器函数, 有 yield 的函数调用后回返回生成器对象
def myrange(stop):
i = 0
while i < stop:
# print('i=', i)
yield i # 生成i
i += 1
# result = myrange(5)
# print(result)
for x in myrange(5):
print('x=', x)
for x in list(range(100000)):
if x == 5:
break
print(x)
for x in range(100000):
if x == 5:
break
print(x)
class Car:
pass
car1 = Car() # 创建第一辆汽车(红色 比亚迪)
car2 = Car() # 创建第二辆汽车(白色 宾利)
car1.color = '红色' # 颜色
car1.brand = '比亚迪' # 品牌
car2.color = '白色' # 颜色
car2.brand = '宾利' # 品牌
print(car2.color, '的', car2.brand, '正在飞驰')
print(car1.color, '的', car1.brand, '正在停车')
class Car:
def run(self, speed):
print(self.color, '的', self.brand, '正在以',
speed, 'km/h的速度行驶')
car1 = Car() # 创建第一辆汽车(红色 比亚迪)
car2 = Car() # 创建第二辆汽车(白色 宾利)
car1.color = '红色' # 颜色
car1.brand = '比亚迪' # 品牌
car2.color = '白色' # 颜色
car2.brand = '宾利' # 品牌
# 第一种调用实例方法的方式
Car.run(car1, 120)
Car.run(car2, 230)
# 第二种调用实例方法的方式
car1.run(160)
car2.run(330)
class Car:
def __init__(self, c='透明', b='无品牌'):
print("__init__, 被调用")
self.color = c # 颜色
self.brand = b # 品牌
def run(self, speed):
print(self.color, '的', self.brand, '正在以',
speed, 'km/h的速度行驶')
car1 = Car('红色', '比亚迪') # 创建第一辆汽车(红色 比亚迪)
car1.run(160)
car2 = Car('白色', '宾利') # 创建第二辆汽车(白色 宾利)
car2.run(330)
car3 = Car()
car3.run(40)
class Dog:
def __init__(self, c, k):
self.color = c # 颜色
self.kind = k # 品种
self.foods = [] # 保存食物
def eat(self, weight, food):
print(self.color, '的',self.kind, '吃了',
weight, '斤', food)
self.foods.append(food)
def info(self):
print(self.color, '的', self.kind, '吃过',self.foods)
dog1 = Dog('白色', '藏獒')
dog1.eat(1, '羊肉') # 白色 的 藏獒 吃了 1 斤 羊肉,
dog2 = Dog('灰色', '导盲犬')
dog2.eat(2, '狗粮') # 灰色 的 导盲犬 吃了 2 斤 狗粮,
dog1.eat(2, '牛肉') # 白色 的 藏獒 吃了 2 斤 牛肉,
dog1.info() # 白色 的 藏獒 吃过 ['羊肉', '牛肉']
dog2.info() # 灰色 的 导盲犬 吃过 ['狗粮']
class Human: # 定义一个人类
def say(self, what):
print("说:", what)
def walk(self, distance):
print('走了', distance, '公里')
class Student(Human):
def study(self, subject):
print('学习', subject)
class Teacher(Human):
def teach(self, subject):
print('教', subject)
h1 = Human()
h1.say('天气真好')
h1.walk(5)
s1 = Student()
s1.walk(4)
s1.say('有点累')
s1.study('面向对象')
t1 = Teacher()
t1.teach('Python')
t1.say('今天周五')
t1.walk(6)
class Human: # 定义一个人类
def say(self, what):
print("人说:", what)
class Student(Human):
def say(self, what):
print('student 说', what)
h1 = Human()
h1.say('天气真好')
s1 = Student()
s1.say('有点累')
class Dog: # 组合
def __init__(self):
self.foods = []
dog1 = Dog()
print(dog1.foods)
class Dog2(list): # 继承
pass
dog2 = Dog2()
print('dog2=', dog2)
class Plane:
def fly(self, height):
print("飞机以海拔", height,'米的高度飞行')
class Car:
def run(self, speed):
print("汽车以", speed, '公里/小时的速度行驶')
class PlaneCar(Plane, Car):
pass
pc = PlaneCar()
pc.run(120)
pc.fly(10000)
class Book:
def __init__(self, title, author):
'''初始化方法,在实例化时自动调用'''
self.title = title # 标题
self.author = author # 作者
def __str__(self):
return '%s的<<%s>>' % (self.author, self.title)
def __call__(self, *args, **kwargs):
print('__call__被调用, args=', args,
'kwargs=', kwargs)
b1 = Book('Shell编程', '丁明一')
s = str(b1) # 调用b1.__str__()
print(s)
b1(1,2,3, a=11, b=22, c=33) # 调用b1.__call__()
# 实现 cp 命令
# $ cp /etc/passwd /root/passwd
import sys
def copyfile(srcfilename, dstfilename):
with open(srcfilename, 'rb') as fr:
with open(dstfilename, 'wb') as fw:
while True:
b = fr.read(1*1024*1024)
if not b:
break
fw.write(b)
def main():
# 判断参数是否够用
if len(sys.argv) < 3:
print('''USAGE:
mycp 源文件路径 目标文件路径''')
return
# 1. 用shutil.copyfile()
# import shutil
# shutil.copyfile(sys.argv[1], sys.argv[2])
# 2. 用自定义的函数实现
try:
copyfile(sys.argv[1], sys.argv[2])
except:
print("复制文件失败")
main()
class A:
def say_hello(self):
print('Hello A')
class B(A):
def say_hello(self):
print("hello B")
# self.say_hello() 无限递归调用
# 能否在此方法内调用 A类里面的 say_hello()
# 方法1
# A.say_hello(self)
# 方法2 ,super() 会把self 看成是A类的对象
super().say_hello()
b = B()
b.say_hello() # hello B Hello A
# 在数据库 nsd2104 中创建一个数据表 departments
# 此表用与存储一个公司部分的信息
# 导入pymysql
import pymysql
# 连接数据库
conn = pymysql.connect(
host='localhost',
user='root',
password='tedu.cn', # 改为自己的密码
# 'create databases nsd2104 default charset utf8'
db='nsd2104', # 指定操作哪个数据库
charset='utf8'
)
# ... 在此处进行数据操作
# 需要使用 游标(对象)来操作数据库
cursor = conn.cursor() # 创建一个游标
# 写一条SQL 语句交给 游标来执行
create_dep = '''CREATE TABLE departments(
id INT,
dep_name VARCHAR (20),
PRIMARY KEY(id)
)'''
# 使用游标 来执行 SQL 语句
cursor.execute(create_dep) # 写入 SQL 语句
conn.commit() # 提交SQL 语句到 服务器去执行
# 如果不再执行SQL 语句则 需要关闭游标
cursor.close()
# 操作完数据库,断开连接
conn.close() # > quit; 退出连接
# file: pymysql_screate_table.py
# 导入 pymysql 包
import pymysql
# 连接数据库
conn = pymysql.connect(
host='localhost',
user='root',
password='tedu.cn',
db='nsd2104', # 制定操作哪一个数据库
charset='utf8' # 制定操作的字符集
)
# 操作数据库
# 需要使用 游标来操作数据库
cursor = conn.cursor() # 创建游标
# 制定要操作的 SQL 语句
create_dep = '''CREATE TABLE departments(
id INT,
dep_name VARCHAR (20),
PRIMARY KEY(id)
)'''
# 使用游标 来执行 SQL 语句
cursor.execute(create_dep) # 写入 SQL 语句
conn.commit() # 提交SQL 语句到 服务器去执行
# 如果不再执行SQL 语句则 需要关闭游标
cursor.close()
# 操作完数据库,断开连接
conn.close() # > quit;
# 此示例示意 数据库的增删改查操
# file: pymysql_create_table.py
# 导入 pymysql 包
import pymysql
# 连接数据库
conn = pymysql.connect(
host='localhost',
user='root',
password='tedu.cn',
db='nsd2104', # 指定操作哪一个数据库
charset='utf8' # 指定操作的字符集
)
# 操作数据库
# 需要使用 游标来操作数据库
cursor = conn.cursor() # 创建游标
# 在此处写SQL语句 进行增删改查操作
# 1. 插入数据
# insert_sql = 'INSERT INTO departments VALUES (%s, %s)'
# 1.1 插入一条数据到表 departments
# cursor.execute(insert_sql, (1, '人事部'))
# 1.2 插入多行数据, 用 executemany 方法 第二个参数是 列表
# cursor.executemany(insert_sql, [
# (2, '运维部'),
# (3, '开发部'),
# (4, '测试部'),
# (5, '财务部'),
# ])
# conn.commit() # 把SQL 语句提交到服务器
# 2. 查询数据
select_sql = 'SELECT id, dep_name FROM departments'
cursor.execute(select_sql)
#2.1 取出一行数据
result1 = cursor.fetchone()
print(result1)
#2.2 取出2行数据
result2 = cursor.fetchmany(2)
print(result2)
# 2.3 取出剩余的全部数据
result3 = cursor.fetchall()
print(result3)
# 课间休息: 16:14 回来
# 3. 修改
# update_sql = 'UPDATE departments SET dep_name=%s WHERE dep_name=%s'
# cursor.execute(update_sql, ('人力资源部', '人事部'))
# conn.commit() # 提交
# 4. 删除
# delete_sql = 'DELETE FROM departments WHERE id=%s'
# r = cursor.execute(delete_sql, (5,))
# conn.commit()
# 如果不再执行SQL 语句则 需要关闭游标
cursor.close()
# 操作完数据库,断开连接
conn.close() # > quit;
import subprocess
# 启动一个shell进程,让此进程执行 'ls ~'命令
result = subprocess.run(
'ls ~',
shell=True, # 在子进程中运行此命令
stdout=subprocess.PIPE # 指明在标准输出保存到stdout属性中
)
print('您执行的命令是', result.args)
print('此程序的返回值是', result.returncode)
print('此程序的输出是', result.stdout.decode())
# 写一个程序,测试此网络内,
# 192.168.1.1 ~ 192.168.1.254 之间的机器,哪些开机,哪些关机
import subprocess
def ping(ip):
cmd = 'ping -c2 %s &> /dev/null' % ip
r = subprocess.run(cmd, shell=True)
if r.returncode == 0:
print(ip, '通')
else:
print(ip, '不通')
if __name__ == '__main__':
for i in range(1, 255):
ipv4 = '192.168.0.%d' % i
ping(ipv4)
import threading
import time
def say_hello():
for x in range(10):
print("hello!!!")
time.sleep(1)
def say_world():
for y in range(10):
print('world!!!')
time.sleep(1)
# 使用单进程执行
# say_hello() # 花费 10秒
# say_world() # 花费 10秒
# 使用多进程执行
t1 = threading.Thread(target=say_hello)
t1.start()
t2 = threading.Thread(target=say_world)
t2.start()
print('主程序结束')
# 写一个程序,测试此网络内,
# 192.168.1.1 ~ 192.168.1.254 之间的机器,哪些开机,哪些关机
import subprocess
import threading
def ping(ip):
cmd = 'ping -c2 %s &> /dev/null' % ip
r = subprocess.run(cmd, shell=True)
if r.returncode == 0:
print(ip, '通')
else:
print(ip, '不通')
if __name__ == '__main__':
for i in range(1, 255):
ipv4 = '192.168.0.%d' % i
# 用多线程 去ping 不同的IP
t = threading.Thread(target=ping, args=(ipv4,))
t.start()
# ping(ipv4)
print("主进程结束")
from narcissistic import print_narcissistic
from table99 import print_99_table
while True: # 课间休息: 10:12 回来
print('1) 打印水仙花数')
print('2) 打印99乘法表')
print('0) 退出')
x = input('请选择:')
if x == '1':
print_narcissistic()
elif x == '2':
print_99_table()
elif x == '0':
break
# 算出 100 ~ 999 的水仙花数
# 水仙花数是 指百位的3次方 + 十位的3次方 + 各位的3次方 等于原数的数
# 打印出所有的 水仙花数
def print_narcissistic():
# 方法3
for bai in range(1, 10):
for shi in range(10):
for ge in range(10):
x = bai * 100 + shi * 10 + ge
if x == bai ** 3 + shi ** 3 + ge ** 3:
print(x)
# 方法2
# for x in range(100, 1000):
# s = str(x) # 把数字转换为文字
# bai = int(s[0]) # 百位
# shi = int(s[1]) # 十位
# ge = int(s[2]) # 各位
# if x == bai ** 3 + shi ** 3 + ge ** 3:
# print(x)
# 方法1
# for x in range(100, 1000):
# bai = x // 100 # 百位
# shi = x // 10 % 10 # 十位
# ge = x % 10 # 各位
# if x == bai ** 3 + shi ** 3 + ge ** 3:
# print(x)
if __name__ == '__main__':
print_narcissistic()
# 打印 九九 乘法表
# 1x1=1
# 1x2=2 2x2=4
# 1x3=3 2x3=6 3x3=9
# ....
# 1x9=9 ........ 9x9=81
# 创建一个函数, 给出一个整数,打印一行,如给出3,则打印
# 1x3=3 2x3=6 3x3=9
def print_99_aline(n):
for i in range(1, n+1):
print('%dx%d=%d' % (i, n, i*n), end=' ')
print()
def print_99_table():
for line in range(1, 10):
print_99_aline(line)
if __name__ == '__main__':
print_99_table()
# 导入 paramiko 模块
import paramiko
# 创建一个paramko 客户端对象
ssh_clint = paramiko.SSHClient()
# 设置自动接受服务器的主机密钥
ssh_clint.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 登陆远程主机
ssh_clint.connect('localhost', # 远程主机的IP
username='root', # 远程主机的用户名
password='root', # 远程主机的密码
port=22 # ssh 的端口号
)
# 在此处操作远程主机
result = ssh_clint.exec_command('id root; id zhangsan') # 在远程主机上执行命令
# print('len(result)=', len(result)) # result 绑定三个文件流对象的元组
stdout = result[1] # 得到标准输出
stderr = result[2] # 得到标准错误输出
print("标准输出:", stdout.read().decode())
print("标准错误输出:", stderr.read().decode())
ssh_clint.exec_command('mkdir 魏老师的专用文件夹')
# 关闭连接
ssh_clint.close() # 相当于在ssh 的内部执行 exit 命令
from email.mime.text import MIMEText
from email.header import Header
import smtplib
import getpass
def inet_email(
body, # 邮件的内容,
sender, # 发送邮件的人的邮箱
receivers, # 接收邮件的email地址的列表
subject, # 邮件的主题
host, # 邮件服务器的主机地址
passwd # 邮箱的密码
):
# 准备正文,plain表示纯文本内容
message = MIMEText(body, 'plain', 'utf8')
# 设置邮件的头部消息
message['From'] = Header(sender, 'utf8')
message['To'] = Header(receivers[0], 'utf8')
message['Subject'] = Header(subject, 'utf8')
# 发送邮件
smtp = smtplib.SMTP()
smtp.connect(host)
smtp.login(sender, passwd)
smtp.sendmail(sender, receivers, message.as_bytes())
if __name__ == '__main__':
body = 'NSD2104 Python 电子邮件测试\n 发送者: 魏老师'
sender = '77878045@qq.com'
receivers = ['77878045@qq.com', 'weimz@tedu.cn']
subject = 'my python email test'
host = 'smtp.qq.com' # QQ 邮箱服务器
# passwd = getpass.getpass('请输入授权码:')
passwd = 'bsodterhkqgucbbb'
inet_email(body, sender, receivers, subject, host, passwd)
# 使用 request 模块向 中国天气网的网站
# 发送GET 请求,来获取北京,上海等天气的信息
# 北京的URL地址:
# http://www.weather.com.cn/data/sk/101010100.html
# 上海的URL地址:
# http://www.weather.com.cn/data/sk/101020100.html
#1. 导入 requests 模块
import requests
import json
# 2. 发送GET请求
url = 'http://www.weather.com.cn/data/sk/101010100.html'
resp = requests.get(url)
# 3. 使用 resp.content 获取网站返回的字节串
# print(resp.content)
# 4. 使用字节串的 decode() 方法,将 resp.content 字节从转换为
# 字符串
s_json = resp.content.decode()
# 5. 将 json 转化为 Python 的数据类型
# print(s_json)
obj = json.loads(s_json) # 课间休息: 15:13 回来
print(obj)
print('城市:', obj["weatherinfo"]['city'])
print('风速:', obj["weatherinfo"]['WS'])
# 使用 request 模块向 中国天气网的网站
# 发送GET 请求,来获取北京,上海等天气的信息
# 北京的URL地址:
# http://www.weather.com.cn/data/sk/101010100.html
# 上海的URL地址:
# http://www.weather.com.cn/data/sk/101020100.html
#1. 导入 requests 模块
import requests
import json
# 2. 发送GET请求
url = 'http://www.weather.com.cn/data/sk/101010100.html'
resp = requests.get(url)
# 3. 将 响应(response)的编码由默认的'ISO-8859-1'改为'utf8'
resp.encoding='utf8'
# 4. 使用响应(response)的 resp.text 获取字符串
s_json = resp.text
# 5. 将 json 转化为 Python 的数据类型
# print(s_json)
obj = json.loads(s_json) # 课间休息: 15:13 回来
print(obj)
print('城市:', obj["weatherinfo"]['city'])
print('风速:', obj["weatherinfo"]['WS'])
import requests
url = 'http://photos.tuchong.com/22110/l/267900.jpg'
h = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36'
}
resp = requests.get(url, headers=h)
# resp.content
with open('./cat.jpg', 'wb') as fw:
# 将get 请求返回来的字节串信息, 保存到文件中。
fw.write(resp.content)
import requests
import json
# API 地址
url = 'http://jisuqgtq.market.alicloudapi.com/weather/query'
# 请求头
headers = {
# 根据API的要求,定义相对应的Content - Type
'Content-Type': 'application/json; charset=UTF-8',
# 权限指定 APPCODE
'Authorization': 'APPCODE e3e8438c45584a768f11eef0a99f2b9a'
}
# 设置查询参数
params = {'citycode': '101010100'} # 城市代码
r = requests.get(url, headers=headers, params=params)
s = r.text
print(s)
data = r.json() # 等同于 json.loads(r.content.decode())
# 使用pprint 模块进行打印
import pprint
pprint.pprint(data)
import requests
import json
# url = '您机器人的webhook地址'
url = 'https://oapi.dingtalk.com/robot/send?access_token=9d6b7923c031c0245ab9979a160656b8b656a74cd91ee24d7051c000ba405656'
headers = {'Content-Type': 'application/json; charset=UTF-8'}
data = {
"msgtype": "text",
"text": {
"content": "好好学习天天向上我就是我, 是不一样的烟火@156xxxx8827,有内鬼终止交易!"
},
"at": {
"atMobiles": [ # @哪些人
# "156xxxx8827",
# "189xxxx8325"
],
"isAtAll": False # @所有人
}
}
data = {
"msgtype": "markdown",
"markdown": {
"title": "春节放假通知",
"text": """## 放假通知

好好学习天天向上 [TMOOC](http://tmooc.cn)
"""
},
"at": {
"atMobiles": [
"13488820215"
],
"isAtAll": False
}
}
data = {
"msgtype": "markdown",
"markdown": {
"title": "七夕节",
"text": "#### 七夕节\n> 银烛秋光冷画屏,轻罗小扇扑流萤。天街夜色凉如水,卧看牵牛织女星。\n好好学习天天向上 \n> \n> ###### 七夕 [七夕](https://baike.sogou.com/v179909070.htm) \n"
},
"at": {
"atMobiles": [
],
"isAtAll": False
}
}
r = requests.post(url, headers=headers, data=json.dumps(data))
print(r.json())