Python的练习题(初学百练)100+

 此文的脚本是根据

《《python基础》》_kali_yao的博客-CSDN博客Python进阶_kali_yao的博客-CSDN博客安装python 的包控制mysql的Python脚本与执行系统命令的Python脚本_kali_yao的博客-CSDN博客Python 的电子邮件编程_kali_yao的博客-CSDN博客

所写的示例

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
4

cat hello.txt

ABC中文

cat mynode.txt

我有一个朋友叫小芳

cat mynode2.txt

ABC
123
abc

cat 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": """## 放假通知
![](http://aid.codeboy.com:8008/static/python/_images/202102.jpeg)
好好学习天天向上 [TMOOC](http://tmooc.cn)
"""
    },
    "at": {
        "atMobiles": [
            "13488820215"
        ],
        "isAtAll": False
    }
}

data = {
     "msgtype": "markdown",
     "markdown": {
         "title": "七夕节",
         "text": "#### 七夕节\n> 银烛秋光冷画屏,轻罗小扇扑流萤。天街夜色凉如水,卧看牵牛织女星。\n好好学习天天向上 \n> ![screenshot](https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png)\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())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值