@每日作业

目录

5.22 day03作业

 1. 变量 

 2. 运算符

 3. 分支结构 

4. 循环结构

5.23 day04列表作业

5.24 day05字典和字符串作业

1. 字典 

 2. 字符串

5.28 excel.xlsx作业

5.29 excel.xls作业(颜色对照表) 

5.30 pyecharts制图作业

6.19 运算符作业 

6.20 分支和循环作业

1. 基础题

2. 进阶题

6.21 循环练习题

1. 基础题

2. 进阶题 

6.22-6.23 周末循环练习


5.22 day03作业

 1. 变量 

1. 声明一个整数类型的变量,名为num,并将其赋值为10。

num = 10

2. 创建一个字符串类型的变量,名为name,并将其赋值为"John"。

name = "John"

3. 定义一个布尔类型的变量,名为is_true,并将其赋值为True。

is_true = True

4. 定义一个浮点数类型的变量,名为price,并将其赋值为99.99。

price = 99.99

5. 创建一个变量,名为counter,并将其初始值设为0。然后通过递增操作将其值增加1。

counter = 0
counter += 1

6. 声明一个变量,名为my_var,并将其赋值为另一个变量的值(例如x = y)。

x = 8
my_var = x

7. Python中的变量命名规则是什么?

'''
2个要求: 是标识符;不是关键字
        标识符-所有的名字必须由字母、数字或者下划线组成,并且数字不能开头。
3个规范: a.见名知义(看到变量名就大概知道这个变量中保存的是什么数据)
        b.如果名字由多个单词组成,单词和单词之间用下划线隔开(也可以使用驼峰式命名)
        c.不使用系统函数名(例如:print、input)、类名(int、float、str...)或者模块名
'''

 2. 运算符

1. 编写一个程序,计算两个数的和、差、积和商。

a = 2
b = 3
sum1 = a + b
difference = a - b
product = a * b
quotient = a / b

2. 编写一个程序,计算一个圆的面积和周长。提示:使用半径和圆周率π(取3.14159)进行计算。

pi = 3.14159
r = 2
s = pi * r * r
c = 2 * pi * r

3. 编写一个程序,将摄氏温度转换为华氏温度。提示:使用华氏温度 = (摄氏温度 * 9/5) + 32 进行计算

temp = 35
F = (temp * 9 / 5) + 32

4.编写一个程序,判断一个数是否大于0并且小于10,并输出结果。

num1 = 8
print('num1是否大于0并且小于10:', 0 < num1 < 10)

5.编写一个程序,输入一个三位数的整数,将其个位、十位和百位数分别输出。

num2 = int(input('请输入一个整数:'))
print('num2的个位:', num2 % 10)
print('num2的十位:', num2 // 10 % 10)
print('num2的百位:', num2 // 100 % 10)

   


 3. 分支结构 

1.编写一个程序,输入一个整数,判断该数是正数、负数还是零,并输出相应的提示信息。

num3 = int(input('请输入一个整数:'))
if num3 == 0:
    print('num3是0')
elif num3 > 0:
    print(num3, '是一个正数')
else:
    print(num3, '是一个负数')

2.编写一个程序,输入三个数,判断这三个数是否能构成一个三角形,并输出相应的提示信息。如果能构成三角形,则判断它是等边三角形、等腰三角形还是一般三角形。

print('请输入三个数:')
a = int(input())
b = int(input())
c = int(input())
if a + b > c and a + c > b and b + c > a:
    print('这三个数能构成三角形')
    if a == b and a == c and b == c:
        print('该三角形是等边三角形')
    elif a != b and a != c and b != c:
        print('该三角形是一般三角形')
    else:
        print('该三角形是等腰三角形')
else:
    print('这三个数不能构成三角形')

3.编写一个程序,输入一个三位数的整数,判断该数是否为水仙花数,并输出相应的提示信息。水仙花数是指一个三位数,其各位数字的立方和等于该数本身。

num4 = int(input("请输入一个三位数的整数来判断是否为水仙花数:"))
ge = num4 % 10
shi = num4 // 10 % 10
bai = num4 // 100 % 10
if ge ** 3 + shi ** 3 + bai ** 3 == num4:
    print('num4是水仙花数')
else:
    print('num4不是水仙花数')

4.编写一个程序,输入一个年龄,判断该年龄属于儿童(0-12岁)、青少年(13-18岁)、成年人(19-60岁)还是老年人(60岁以上),并输出相应的提示信息。

year = int(input('请输入您的年龄:'))
if 0 < year <= 12:
    print('您的年龄属于儿童(0-12岁)')
elif year <= 18:
    print('您的年龄属于青少年(13-18岁)')
elif year <= 60:
    print('您的年龄属于成年人(19-60岁)')
else:
    print('您的年龄属于老年人(60岁以上)')

5.编写一个程序,输入一个月份,判断该月份属于哪个季节,并输出相应的提示信息。

month = int(input('请输入一个月份:'))
if 3 <= month <= 5:
    print('您输入的月份属于春季')
elif 6 <= month <= 8:
    print('您输入的月份属于夏季')
elif 9 <= month <= 11:
    print('您输入的月份属于秋季')
else:
    print('您输入的月份属于冬季')

4. 循环结构

1.编写一个程序,使用循环打印出1到10之间的所有整数。

for i in range(1, 11):
    print(i)

2.编写一个程序,使用循环计算并输出1到100之间所有整数的和。

sum1 = 0
for j in range(1, 101):
    sum1 += j
print(sum1)

3.编写一个程序,使用循环计算并输出1到100之间所有偶数的和。

sum2 = 0
for k in range(2, 101, 2):
    sum2 += k
print(sum2)

4.编写一个程序,使用循环计算并输出1到100之间所有奇数的和。

sum3 = 0
for a in range(1, 101, 2):
    sum3 += a
print(sum3)

5.编写一个程序,使用循环计算并输出1到100之间所有能被3整除的数的和。

sum4 = 0
for b in range(3, 101, 3):
    sum4 += b
print(sum4)

6.编写一个程序,使用循环计算并输出1到100之间所有能被3整除且能被5整除的数的和。

sum5 = 0
for c in range(1, 101):
    if c % 3 == 0 and c % 5 == 0:
        sum5 += c
print(sum5)

7.编写一个程序,使用循环计算并输出10的阶乘。

ans = 1
for d in range(1, 11):
    ans *= d
print(ans)

8.编写一个程序,使用循环计算并输出1到100之间所有数字的平方。

for e in range(1, 101):
    print(e ** 2)

5.23 day04列表作业

1.编写一个程序,创建一个空列表,并向其中添加5个整数元素。

ls1 = []
for i in range(5):
    ls1.append(i)
print(ls1)

2.编写一个程序,创建一个包含5个字符串的列表,并打印出列表中的每个元素。

movies = ['肖生克的救赎', '沉默的羔羊', '绿皮书', '霸王别姬', '战狼']
for i in movies:
    print(i)

3.编写一个程序,创建一个包含10个整数的列表,并计算列表中所有元素的和。

ls = [90, 87, 61, 36, 45, 55, 66, 34, 88, 42]
print(sum(ls))

4.编写一个程序,创建一个包含10个整数的列表,并找出列表中的最大值和最小值。

ls = [90, 87, 61, 36, 45, 55, 66, 34, 88, 42]
print('max = ', max(ls))
print('min = ', min(ls))

5.编写一个程序,创建一个包含10个整数的列表,并计算列表中所有偶数元素的和。

ls = [90, 87, 61, 36, 45, 55, 66, 34, 88, 42]
sum1 = 0
for i in ls:
    if i % 2 == 0:
        sum1 += i
print(sum1)

6.编写一个程序,创建两个列表,分别包含5个整数,然后将这两个列表合并为一个新列表。

ls1 = [0, 1, 2, 3, 4]
ls2 = [5, 6, 7, 8, 9]
ls3 = ls1 + ls2
print(ls3)

7.编写一个程序,创建一个包含10个整数的列表,并移除列表中的所有偶数元素。

ls = [90, 87, 61, 36, 45, 55, 66, 34, 88, 42]
new_ls = [90, 87, 61, 36, 45, 55, 66, 34, 88, 42]
for i in ls:
    if i % 2 == 0:
        new_ls.remove(i)
print(new_ls)

8.编写一个程序,创建一个包含10个整数的列表,并计算列表中大于等于5的元素的个数。

ls = [0, 5, 1, 36, 45, 4, 66, 34, 88, 2]
count = 0
for i in ls:
    if i >= 5:
        count += 1
print(count)

9.编写一个程序,创建一个包含10个整数的列表,并计算列表中所有元素的平均值

ls = [90, 87, 61, 36, 45, 55, 66, 34, 88, 42]
print('average = ', sum(ls) / 10)

10.编写一个程序,创建一个包含10个整数的列表,并找出列表中的第一个负数

ls = [0, -5, 1, 36, -45, 4, 66, 34, -88, 2]
for i in ls:
    if i < 0:
        print('列表中的第一个负数:', i)
        break

11.已经一个排好序的的列表(从小到到排序),编写程序提示用户输入一个数字,将输入的数字添加到列表中,要求添加以后列表仍然按照从小到大的方式排序

ls = [0, 1, 2, 4, 5, 34, 36, 45, 66, 88]
x = int(input('请输入一个数字:'))
for i in range(len(ls)):
    if ls[i] >= x:
        ls.insert(i, x)
        break
    elif x > ls[len(ls)-1]:
        ls.append(x)
print(ls)

5.24 day05字典和字符串作业

1. 字典 

1. 创建一个空字典

dict1 = {}

2. 创建一个包含3个键值对的字典

stu = {'name': '小明', 'age': 18, '性别': '男'}
print(stu)

3. 创建一个字典保存一个订单的数据,然后修改其中价格对应的键值对的值为100

order = {'name': '火鸡面', 'price': 3.5, 'count': 10, 'discount': 0.8}
order['price'] = 100  # 这里修改价格是有意而为之
print(order)

4. 统计列表中每个元素的个数,以字典的形式返回(键是元素,值是对应的元素的个数)

ls = [1, 2, 3, 4, 5, 1, 1, 2, 4, 6]
dic = {}
for i in ls:
    dic.setdefault(i, 0)
    dic[i] += 1
print(dic)

5. 定义一个列表,在列表中保存多个学生的信息(学生信息中包括:姓名、年龄、成绩(单科)、电话、性
别(男、女、不明) )
1)统计不及格学生的个数
2)打印不及格未成年学生的名字和对应的成绩
3)求所有男生的平均年龄
4)打印手机尾号是8的学生的名字
5)打印最高分和对应的学生的名字
6)删除性别不明的所有学生

students = [
    {'name': 'stu1', 'age': 17, 'gender': '男', 'score': 54, 'tel': '122334'},
    {'name': 'stu2', 'age': 28, 'gender': '女', 'score': 99, 'tel': '29838'},
    {'name': 'stu3', 'age': 22, 'score': 65, 'tel': '22223'},
    {'name': 'stu4', 'age': 22, 'gender': '男', 'score': 77, 'tel': '6544'},
    {'name': 'stu5', 'age': 21, 'gender': '男', 'score': 46, 'tel': '664328'},
    {'name': 'stu6', 'age': 16, 'gender': '女', 'score': 82, 'tel': '12278334'}
]   # 性别‘不明’是不知道性别的意思
# 1)统计不及格学生的个数
count = 0
for stu in students:
    if stu['score'] < 60:
        count += 1
print(f'不及格学生的个数:{count}')
# 2)打印不及格未成年学生的名字和对应的成绩
for stu in students:
    if stu['score'] < 60 and stu['age'] < 18:
        print(f'名字:{stu["name"]}  分数:{stu["score"]}')
# 3)求所有男生的平均年龄
sum1 = 0
count1 = 0
for stu in students:
    # 此处只能用.get()的方法,因为前面列表中某些字典没有'gender'这个键
    if stu.get('gender') == '男':
        sum1 += stu['age']
        count1 += 1
print(f'所有男生的平均年龄:{sum1/count1}')
# 4)打印手机尾号是8的学生的名字
print('打印手机尾号是8的学生的名字:')
for stu in students:
    if stu['tel'][-1] == '8':
        print(stu['name'])
# 5)打印最高分和对应的学生的名字
# 方法1:
scores = []
for stu in students:
    scores.append(stu['score'])
max_score = max(scores)
for stu in students:
    if stu['score'] == max_score:
        print('最高分 ', max_score, stu['name'])

# 方法2
max_score = 0
max_score_student = ""
for stu in students:
    if stu['score'] > max_score:
        max_score = stu['score']
        max_score_student = stu['name']
    elif stu['score'] == max_score:
        max_score_student += stu['name']
print('最高分', max_score, max_score_student)
# 6)删除性别不明的所有学生
new_students = students
for stu in students:
    if stu.get('gender') != None:
        new_students.append(stu)
print(new_students)

 2. 字符串

1.编写一个程序,创建一个字符串变量,并打印出该字符串的长度。

str1 = 'abcdefg'
print('字符串长度:', len(str1))

2.编写一个程序,创建一个字符串变量,并检查该字符串是否为空。

# 方法1:
str1 = ''
str2 = 'a'
print('字符串是否为空:', str1 == '')
print('字符串是否为空:', str2 == '')

# 方法2:
if str1:
    print('非空字符串')
else:
    print('空字符串')

3.编写一个程序,创建一个字符串变量,并打印出该字符串的第一个字符。

str1 = 'abcdefg'
print(str1[0])

4.编写一个程序,创建一个字符串变量,并打印出该字符串的最后一个字符。

str1 = 'abcdefg'
print(str1[-1])

5.编写一个程序,创建一个字符串变量,并打印出该字符串的倒序。

str1 = 'abcdefg'
for x in range(len(str1)-1,-1,-1):
    print(str1[x])

6.编写一个程序,创建一个字符串变量,并检查该字符串是否以某个指定的子字符串开头。

str1 = 'abcdefg'
str2 = 'ab'
str3 = 'cd'
print(str2 == str1[0: len(str2)])
print(str3 == str1[0: len(str2)])

7.编写一个程序,创建一个字符串变量,并检查该字符串是否以某个指定的子字符串结尾。

str1 = 'abcdefg'
str2 = 'fg'
str3 = 'cd'
print(str2 == str1[-len(str2):])
print(str3 == str1[-len(str2):])

8.编写一个程序,创建一个字符串变量,并检查该字符串是否只包含字母字符。

str1 = 'abc1235你我'
str2 = 'abcdefg'
for i in str1:
    if not ('a' <= i <= 'z' or 'A' <= i <= 'Z'):
        print('该字符串不只包含字母字符')
        break
else:
    print('该字符串只包含字母字符')

5.28 excel.xlsx作业

将data2.xlsx文件中所有不及格的分数的值变成红色,补考变成绿色字体

import openpyxl
from openpyxl.styles import Font, PatternFill, Border, Side, Alignment

# 读入工作簿中的工作表
wb = openpyxl.load_workbook('files/data2.xlsx')
sheet = wb['Sheet1']

# 创建字体对象
font1 = Font(
    # green
    color='006633',
    size='14'
)
font2 = Font(
    color='CC3333',  # red
    size='14'
)

max_r = sheet.max_row
max_c = sheet.max_column

# 遍历表格
for row in range(2, max_r + 1):
    for col in range(2, max_c):
        if sheet.cell(row, col).value == '补考':
            sheet.cell(row, col).font = font1
        elif sheet.cell(row, col).value < 60:
            sheet.cell(row, col).font = font2

# 保存
wb.save('files/data2.xlsx')

5.29 excel.xls作业(颜色对照表) 

import xlwt

# 准备工作表
wb = xlwt.Workbook()
sheet = wb.add_sheet('颜色对照表')

# 准备数据
dic = xlwt.Style.colour_map
ls = []
color = list(dic.keys())
num = list(dic.values())
ls.append(color)
ls.append(num)

header = ['颜色', '颜色单词', '颜色值']

m_r = len(color) + 1
m_c = len(header)

# 设置行高
for i in range(m_r):
    sheet.row(i).height_mismatch = True
    sheet.row(i).height = 10 * 60

# 设置列宽
for i in range(m_c):
    sheet.col(i).width = 20 * 256

# 创建样式
style1 = xlwt.XFStyle()  # 标题
style2 = xlwt.XFStyle()  # 正文
style3 = xlwt.XFStyle()  # 颜色块

# 设置字体
# 表头
font1 = xlwt.Font()
style1.font = font1

font1.name = '黑体'
font1.bold = True
font1.height = 18 * 18

# 正文
font2 = xlwt.Font()
style2.font = font2

font2.height = 15 * 15

# 设置边框
borders1 = xlwt.Borders()
style1.borders = borders1
style2.borders = borders1
style3.borders = borders1

borders1.top, borders1.top_colour = 2, 8
borders1.bottom, borders1.bottom_colour = 2, 8
borders1.left, borders1.left_colour = 2, 8
borders1.right, borders1.right_colour = 2, 8

# 设置对齐方式
alignment1 = xlwt.Alignment()
style1.alignment = alignment1
style2.alignment = alignment1
style3.alignment = alignment1

alignment1.vert = xlwt.Alignment.VERT_CENTER
alignment1.horz = xlwt.Alignment.HORZ_CENTER

for i in range(len(header)):
    sheet.write(0, i, header[i], style=style1)

# 填入数据
# 方法1
for y in range(2):
    col = y + 1
    for x in range(len(color)):
        row = x + 1
        col_value = ls[y]
        sheet.write(row, col, col_value[x], style2)
# # 方法2 + 填充
# row = 1
# for key in dic:
#     # 获取每一行的颜色信息
#     value = dic[key]
#     # 填充
#     pattern1 = xlwt.Pattern()
#     style3.pattern = pattern1
#     pattern1.pattern = xlwt.Pattern.SOLID_PATTERN
#     pattern1.pattern_fore_colour = value
#     # 将颜色数据写入单元格中
#     sheet.write(row, 0, '', style=style3)         # 填入第一列空值
#     sheet.write(row, 1, key, style=style2)        # 填入第二列颜色单词
#     sheet.write(row, 2, value, style=style2)      # 填入第三列颜色值
#     # 设置行高,但是注意要单独设置第一行
#     sheet.row(row).height_mismatch = True
#     sheet.row(row).height = 10 * 60
#
#     row += 1

for j in range(len(num)):
    row = j + 1
    # 填充背景颜色
    pattern1 = xlwt.Pattern()
    style3.pattern = pattern1
    pattern1.pattern = xlwt.Pattern.SOLID_PATTERN
    pattern1.pattern_fore_colour = num[j]
    sheet.write(row, 0, style=style3)

wb.save('files/颜色.xls')

   

   

5.30 pyecharts制图作业

 导入包

from pyecharts import options
from pyecharts.charts import Map
from pyecharts.charts import Pie
from pyecharts.charts import Bar
import openpyxl

作业1:

# 1. 使用地图显示前100名大学在各省份的分布情况
# 准备数据
wb = openpyxl.load_workbook('files/2020年中国大学排名.xlsx')
sheet = wb['Sheet1']

m_c = sheet.max_column
m_r = sheet.max_row

dic1 = {}
for row in range(2,m_r+1):
    value = sheet.cell(row, 3).value
    if value == '北京' or value == '重庆' or value == '上海' or value == '天津':
        key = value +'市'
    else:
        key = value + '省'
    dic1[key] = dic1.get(key, 0) + 1
print(dic1)

data = []
for i in dic1:
    temp = (i, dic1[i])
    data.append(temp)
print(data)

# 创建地图对象
map1 = Map()

# 添加数据
map1.add(
    '大学数量',
    data,
    # 限制缩放比例
    min_scale_limit=0.5,
    max_scale_limit=3,
    # 默认显示的缩放比例
    zoom=1.6,
    # 设置地图位置
    pos_top=150
)

# 添加配置
map1.set_global_opts(
    title_opts=options.TitleOpts(
        title='中国前100名大学在各省份的分布情况',
        pos_left='300'
    ),
    legend_opts=options.LegendOpts(
        is_show=False
    ),
    # 添加视觉地图
    visualmap_opts=options.VisualMapOpts(
        is_show=True,
        min_=0,
        max_=20,
        is_piecewise=True
    )
)

# 制图
map1.render('charts/作业1-分布情况.html')

作业2:

# 2. 使用饼图显示前100名大学中各种类型学校的占比
# 准备数据
dic2 = {}
running_dic = {}
subject_dic = {}
resource_dic = {}
for row in range(2,m_r+1):
    key = sheet.cell(row,4).value
    dic2[key] = dic2.get(key,0) +1
    running_dic[key] = running_dic.get(key,0) + sheet.cell(row,6).value
    subject_dic[key] = subject_dic.get(key, 0) + sheet.cell(row, 7).value
    resource_dic[key] = resource_dic.get(key, 0) + sheet.cell(row, 8).value
# 饼图各类型学校占比数据
data2 = []
for i in dic2:
    temp = (i,dic2[i])
    data2.append(temp)
# 创建饼图对象
pie1 = Pie()

# 添加数据
pie1.add('占比',
         data2,
         # 设置内圆半径和外圆半径
         radius=(60, 150),
         # 让外半径的大小和数据占比相关联
         rosetype='radius'
         )

# 添加配置
pie1.set_global_opts(
    legend_opts=options.LegendOpts(
        is_show=False
    ),
    title_opts=options.TitleOpts(
        title='中国前100名大学中各种类型学校的占比',
        pos_left='280'
    )
)
pie1.set_series_opts(
    label_opts=options.LabelOpts(
        # {b} - 名称
        # {d} - 比例值
        # 默认没有%存在,所以注意添加
        formatter='{b}({d}%)'
    )
)

# 制图
pie1.render('charts/作业2-类型占比.html')

 

作业3:

# 3. 使用柱状图显示不同类型学校的平均办学层次得分、平均学科水平得分、平均办学资源得分
# 准备数据
x_data = list(dic2.keys())

for i in running_dic:
    running_dic[i] /= dic2[i]
    running_dic[i] = round(running_dic[i], 2)

for i in subject_dic:
    subject_dic[i] /= dic2[i]
    subject_dic[i] = round(subject_dic[i], 2)
    print(subject_dic[i])

for i in resource_dic:
    resource_dic[i] /= dic2[i]
    resource_dic[i] = round(resource_dic[i], 2)
    print(resource_dic[i])

# 创建柱状图对象
bar = Bar()

# 添加数据
# x轴数据只能有一个,y轴可以有多个,但是y轴数据必须和x轴对应
# 添加x轴数据
bar.add_xaxis(x_data)

# 添加y轴数据
# 单独设置特殊标记点也在数据内部设置
bar.add_yaxis('平均办学层次得分',
              list(running_dic.values()),
              color='#c0ebd7',
              # bar_width=60,      # 柱子宽度(单独设置这一个数据宽度时可能会导致另一个柱子不显示)
              # bar_max_width=60,       # 缩放时柱子的最大、最小宽度
              # bar_min_width=60,

              )
bar.add_yaxis('平均学科水平得分',
              list(subject_dic.values()),
              color='#b0a4e3'
              )
bar.add_yaxis('平均办学资源得分',
              list(resource_dic.values())
              )

# 添加配置
# 1)全局配置
bar.set_global_opts(
    # a.标题配置
    title_opts=options.TitleOpts(
        # 设置标题内容和标题点击跳转的网址
        title='不同类型学校的各项平均得分',    # 主标题
        # title_link='https://www.baidu.com',
        # subtitle='办学层次得分、平均学科水平得分、平均办学资源分',       # 副标题
        # subtitle_link='https://www.taobao.com',
        # 设置标题位置
        pos_left='300',
        # pos_right='260',
        # 设置对齐方式
        # text_align='center',    # right,left,center
    ),
    # b.图例配置
    legend_opts=options.LegendOpts(
        is_show=True,      # 图例展示/隐藏
        pos_right=100,     # 图例位置
        pos_top=30,
        item_width=10      # 图例大小
    ),
    # c.x轴和y轴的配置
    xaxis_opts=options.AxisOpts(
        name='学校类型'
    ),
    yaxis_opts=options.AxisOpts(
        name='得分',
        # 设置起始最小值、最大值
        min_=0,
        max_=35,
    ),
    # d.添加数据缩放工具(数据多,柱子挤的时候用)
    datazoom_opts=options.DataZoomOpts(
        is_show=True,   # 默认显示中间部分
        # 更改默认的显示部分
        range_start=0,
        range_end=50
    )
)
# 2)系列配置(针对图上的内容)
bar.set_series_opts(
    # a.设置数据标记
    label_opts=options.LabelOpts(
        is_show=False,    # 柱状图上的数字是否显示
    ),
    # b.标记点(标记特殊点)
    markpoint_opts=options.MarkPointOpts(
        data=[
            # 注意数据的类型
            options.MarkPointItem(name='最大值',
                                  type_='max',
                                  # itemstyle_opts=options.ItemStyleOpts(border_color='#000000')
                                  ),
            # options.MarkPointItem(name='最小值',type_='min')
        ]
    ),
    markline_opts=options.MarkLineOpts(
        data=[
            options.MarkLineItem(name='平均值', type_='average')
        ]
    )
)

bar.set_series_opts(
    # 特殊标记点
    markline_opts=options.MarkLineOpts(
        data=[
            # type_的值:max,min,average
            options.MarkLineItem(name='平均值',type_='average')
        ]
    )
)

# 制图
bar.render('charts/作业3-平均得分.html')

 

6.19 运算符作业 

1. 编写程序提示⽤户输⼊两个整数,并且打印它们的乘积、和、差、商和余数。

a = int(input('请输入第一个整数:'))
b = int(input('请输入第二个整数:'))
print('积:', a * b)
print('和:', a + b)
print('差:', a - b)
print('商:', a / b)
print('余数:', a % b)

 

2. 以下代码会输出什么?         6.0

x = 5
x += 3
x *= 2
x -= 4
x /= 2
print(x)

3. 提示⽤户输⼊⼀个正整数,判断这个数的个位数和⼗位数是否相等

num = int(input('请输入一个正整数:'))
ge = num % 10
shi = num % 100 // 10
print(num, '的个位数和十位数是否相等:', ge == shi)

4. 提示⽤户输⼊三个数字:num、start、end。写程序判断num是否在start和end之间。

num = float(input('请输入num数字:'))
start = float(input('请输入start数字:'))
end = float(input('请输入end数字:'))
print('num是否在start和end之间:', start < num < end or end < num < start)

5. 提示⽤户输⼊三⻆形的三个边的值,判断这三个值是否能够构成⼀个三⻆形(即任意两边之和⼤于第三边)

a = float(input('请输入第一条边:'))
b = float(input('请输入第二条边:'))
c = float(input('请输入第三条边:'))
print('这三个值是否能够构成⼀个三⻆形:', a + b > c and a + c > b and b + c > a)

6. 提示⽤户输⼊华⽒温度值,然后写程序将华⽒温度转换成摄⽒温度(C = 5×(F- 32)/9)

F = float(input('请输入华氏温度:'))
print('摄氏温度为:', 5*(F - 32)/9)

7. 提示⽤户输⼊⼀个整数,写出判断这个整数是否是⼀个三位数的条件

num = int(input('请输入一个整数:'))
print('这个整数是否是⼀个三位数:', 100 <= num <= 999 or -999 <= num <= -100)

8. 提示⽤户输⼊身⾼(m)和体重(kg),写出判断这个⼈的身材是否正常。(标准身材:体重/(身⾼的平⽅)在18.5到24.9之间算正常)

height = float(input('请输入身高(m):'))
weight = float(input('请输入体重(kg):'))
print('这个⼈的身材是否正常:', 18.5 < weight / height ** 2 < 24.9)

9. 假设上课时间为23589秒,将上课时间转换成"x时x分x秒"的时间格式

t = 23589
hour = t // 3600
minute = t % 3600 // 60
second = t % 60
print(f"上课时间为{hour}时{minute}分{second}秒")

6.20 分支和循环作业

1. 基础题

1.判断一个数是否为水仙花数。

num = int(input('请输入一个三位正整数:'))
ge = num % 10
shi = num // 10 % 10
bai = num // 100
if ge**3+shi**3+bai**3 == num:
    print(f'num {num} 是一个水仙花数')
else:
    print(f'num {num} 不是一个水仙花数')

2.输入一个整数,判断其正负

num = int(input('请输入一个整数:'))
if num > 0:
    print('正数')
elif num == 0:
    print("0 既不是正数,也不是负数")
else:
    print('负数')

3.输入一个年份,判断是否为闰年

year = int(input('请输入一个年份:'))
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
    print(year, '是闰年')
else:
    print(year, '不是闰年')

4.输入一个月份,判断其季节(春夏秋冬)

month = int(input('请输入一个月份:'))
if month == 3 or month == 4 or month == 5:
    print(month, '月是春季')
elif month == 6 or month == 7 or month == 8:
    print(month, '月是夏季')
elif month == 9 or month == 10 or month == 11:
    print(month, '月是秋季')
elif month == 12 or month == 1 or month == 2:
    print(month, '月是冬季')

5.输入一个年龄,判断其属于哪个年龄段(儿童、青少年、成年人、老年人)。

year = int(input('请输入您的年龄:'))
if 0 < year <= 12:
    print('您的年龄属于儿童(0-12岁)')
elif year <= 18:
    print('您的年龄属于青少年(13-18岁)')
elif year <= 60:
    print('您的年龄属于成年人(19-60岁)')
else:
    print('您的年龄属于老年人(60岁以上)')

6.打印1到10的数字。

for i in range(1, 11):
    print(i)

7.计算1到100的和

sum1 = 0
for i in range(101):
    sum1 += i
print(sum1)

8.打印1到100的所有偶数

for i in range(2, 101, 2):
    print(i)

9.计算1到100的平方和

sum1 = 0
for i in range(101):
    sum1 += i ** 2
print(sum1)

10.打印所有的水仙花数

for num in range(100, 1000):
    ge = num % 10
    shi = num // 10 % 10
    bai = num // 100
    if ge**3+shi**3+bai**3 == num:
        print(num)
# 153 370 371 407

11.提供任意一个数字列表,判断其中是否有负数

# 方法1
ls1 = [1, -2, 3, 23, 45, -89, 19, 0, 5]
for i in ls1:
    if i < 0:
        print('该数字列表有负数')
        break
else:
    print('该数字列表没有负数')
# 方法2
ls1 = [1, -2, 3, 23, 45, -89, 19, 0, 5]
count = 0
for i in ls1:
    if i < 0:
        count += 1
if count:
    print('该数字列表有负数')
else:
    print('该数字列表没有负数')

2. 进阶题

1.判断一个数是否为质数。

# 方法1
num = int(input('请输入一个自然数:'))
if num <= 1:
    print(num, 'num既不是质数,也不是合数')
elif num <= 3:
    print('num是质数')
else:
    for i in range(2, int(num ** 0.5)+1):
        if num % i == 0:
            print('num不是质数')
            break
    else:
        print('num是质数')

# 方法2
num = int(input('请输入一个自然数:'))
count = 0
for i in range(2, int(num ** 0.5)+1):
    if num % i == 0:
        count += 1
if count == 0:
    print('num是质数')
else:
    print('num不是质数')

2.打印斐波那契数列的前20个数字

# 0,     1,    1,       2,3,5,8,13,21,34,55,89…… 
# temp  front   now
#       temp    front   now
front = 1
temp = 0
for i in range(20):
    print(front)
    now = front+temp
    temp = front
    front = now

3.打印1到100的所有质数

for num in range(2, 101):
    if 1 < num <= 3:
        print(num)
    else:
        for i in range(2, num):
            if num % i == 0:
                break
        else:
            print(num)

4.计算1到100的阶乘和

ans = 1
sum1 = 0
for i in range(1, 101):
    ans *= i
    sum1 += ans
print(sum1)

5.计算1到100的所有质数的乘积

ans = 1
for num in range(2, 101):
    if 1 < num <= 3:
        print(num)
        ans *= num
    else:
        for i in range(2, num):
            if num % i == 0:
                break
        else:
            ans *= num
            print(num)
print(ans)

6.打印九九乘法表 

for i in range(1, 10):
    for j in range(1, i+1):
        print(f'{j}*{i}={i*j}\t', end=' ')
    print()

6.21 循环练习题

1. 基础题

1. 编写一个程序,输入一个年份和一个月份,输出该月份的天数。考虑闰年的情况。

year = int(input('请输入一个年份:'))
month = int(input('请输入一个月份:'))
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
    if month == 2:
        print('29天')
else:
    if month == 2:
        print('28天')
if month in [1, 3, 5, 7, 8, 10, 12]:
    print('31天')
elif month in [4, 6, 9, 11]:
    print('30天')

2.使用循环计算并输出1到100之间所有能被3整除的数的和。

sum1 = 0
for i in range(3, 100, 3):
    sum1 += i
print(sum1)

3.编写一个程序,输入三个数,判断这三个数是否能构成一个三角形,并输出相应的提示信息

side1 = float(input('请输入第1条边:'))
side2 = float(input('请输入第2条边:'))
side3 = float(input('请输入第3条边:'))
if side1 + side2 > side3 and side1 + side3 > side2 and side2 + side3 > side1:
    print('这三个数能构成三角形')
else:
    print('这三个数不能构成三角形')

4.编写一个程序,输入三个数,判断它们是否能构成一个等腰三角形,并输出相应的提示信息。

side1 = float(input('请输入第1条边:'))
side2 = float(input('请输入第2条边:'))
side3 = float(input('请输入第3条边:'))
if side1 + side2 > side3 and side1 + side3 > side2 and side2 + side3 > side1:
    if side1 == side2 == side3:
        print('这三个数不能构成一个等腰三角形')
    elif side1 == side2 or side1 == side3 or side2 == side3:
        print('这三个数能构成一个等腰三角形')
    else:
        print('这三个数不能构成一个等腰三角形')
else:
    print('这三个数不能构成一个三角形')

5.编写一个if语句,判断一个变量是否为数字数据,如果是,则打印"是数字”;否则,打印"不是数字”

value = 4
if type(value) == int:
    print('是数字')
else:
    print('不是数字')

6.编写一个程序,使用for和while循环计算并输出1到100之间所有奇数的和。

# for循环:
ans1 = 0
ans2 = 0
for i in range(1, 100, 2):
    ans1 += i
print(ans1)

# while循环
x = 1
while x <= 100:
    if x % 2 != 0:
        ans2 += x
    x += 1
print(ans2)

7.编写一个程序,使用for和while循环计算并输出1到100之间所有能被3整除且能被5整除的数的和。

# for循环:
ans1 = 0
ans2 = 0
for i in range(15, 100, 15):
    ans1 += i
print(ans1)

# while循环
x = 1
while x <= 100:
    if x % 3 == 0 and x % 5 == 0:
        ans2 += x
    x += 1
print(ans2)

8.编写一个程序,使用循环打印出以下图形

        

n = int(input('请输入你想要打印的行数:'))
for i in range(1, n + 1):
    print("*" * i)

9.编写程序判断num对应的整数是否是素数(使用for-else结构)

num = int(input('请输入一个整数:'))
if num < 2:
    print('num不是素数')
else:
    for i in range(2, num):
        if num % i == 0:
            print('num不是素数')
            break
    else:
        print('num是素数')

10.统计100以内个位数是2并且能够被3整除的数的个数

count = 0
for i in range(2,100):
    if i % 10 == 2 and i % 3 == 0:
        count += 1
print(count)

11. 提示用户输入一个整数,写程序判断这个数是一个几位数。

value = input('请输入一个整数:')
count = 0
for i in value:
    count += 1
if int(value) < 0:
    count -= 1
print(f'这个数是 {count} 位数')

2. 进阶题 

 1.编写一个程序,使用循环打印出以下图形:

        

n = int(input('请输入你需要打印图形的行数:'))
for i in range(n, 0, -1):
    print("*" * i)

2. 编写一个程序,输入一个年、月、日三个日期信息,计算该日期是该年的第几天

year = int(input('请输入年份:'))
month = int(input('请输入月份:'))
day = int(input('请输入天数:'))
num_day = 0
if year % 400 == 0:
    for i in range(1, month):
        if i in [1, 3, 5, 7, 8, 10, 12]:
            num_day += 31
        elif i == 2:
            num_day += 29
        else:
            num_day += 30
elif year % 4 == 0 and year % 100 != 0:
    for i in range(1, month):
        if i in [1, 3, 5, 7, 8, 10, 12]:
            num_day += 31
        elif i == 2:
            num_day += 28
        else:
            num_day += 30
num_day += day
print(num_day)

3.编写一个程序,使用循环打印出以下图形:

       

n = int(input('请输入你想打印图形的行数:'))
num = 1
space = n - 1
for i in range(n):
    print(' ' * space, end='')
    print('*' * num)
    num += 2
    space -= 1

6.22-6.23 周末循环练习

1. 判断101-200之间有多少个素数,并输出所有素数。

count = 0
for num in range(101, 201):
    for i in range(2, num):
        if num % i == 0:
            break
    else:
        print(num, end=' ')
        count += 1
print(f'\n101-200之间共有 {count} 个素数')

2. 求整数1~100的累加值,但要求跳过所有个位为3的数。

ans = 0
for num in range(1, 101):
    if num % 10 != 3:
        ans += num
print(ans)

3. 有⼀分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的第20个分数

fen_mu = 1
fen_zi = 2
for i in range(1, 20):
    temp = fen_zi
    fen_zi += fen_mu
    fen_mu = temp
print(f'{fen_zi}/{fen_mu}')    #  17711/10946

4. 写程序计算 n 的阶乘 n! 的结果

n = int(input('请输入需要计算阶乘的n值:'))
ans = 1
for i in range(1, n + 1):
    ans *= i
print(ans)

5. 求1+2!+3!+...+20!的和

sum1 = 0
ans = 1
for i in range(1, 21):
    ans *= i
    sum1 += ans
print(sum1)

6. 写程序求表达式 a + aa + aaa + aaaa+ ... 的结果,其中a是1~9的数字,求和的项数⽤n来控制。(a和n可以⽤变量来表示)

例如: a 3 n 5 的时候: 3 + 33 + 333 + 3333 + 33333

 

# 方法1:
a = int(input('请输入一个数字(1~9):'))
n = int(input('请输入求和项数n:'))
value = 0
for i in range(1, n+1):
    ans = 0
    for j in range(i):
        value += a * 10**j
print(value)

# 方法2:
a = int(input('请输入一个数字(1~9):'))
n = int(input('请输入求和项数n:'))
value = 0
for i in range(1, n+1):
    ans = 0
    for j in range(i):
        temp = a * 10**j
        ans += temp
    # print(ans)
    value += ans
print(value)

 7. 控制台输出三⻆形

 

# a:
n = int(input('请输入n的值:'))
for i in range(n, 0, -1):
    print(i * '*')

# b:
n = int(input('请输入n的值(奇数):'))
space = (n - 1) // 2
for i in range(1, n + 1, 2):
    print(" " * space, end='')
    space -= 1
    print("*" * i)

# c:
n = int(input('请输入n的值:'))
space = n - 1
for i in range(1, n + 1):
    print(" " * space, end="")
    space -= 1
    for j in range(1, i):
        print(j, end="")
    for k in range(i, 0, -1):
        print(k, end="")
    print()

8. ⼩明单位发了100元的购物卡,⼩明到超市买三类洗化⽤品,洗发⽔(15元),⾹皂(2元),⽛刷(5元)。要把100元正好花掉,可有哪些购买结合?

count = 0
v_shampoo, v_soap, v_brush = 15, 2, 5
# 洗发水
for num_shampoo in range(100 // 15 + 1):
    area1 = 100 - num_shampoo * v_shampoo
    # 牙刷
    for num_brush in range(area1 // v_brush + 1):
        area2 = area1 - num_brush * v_brush
        # 香皂
        for num_soap in range(area2 // v_soap + 1):
            if v_shampoo * num_shampoo + v_soap * num_soap + v_brush * num_brush == 100:
                print(f'洗发水:{num_shampoo},牙刷:{num_brush},香皂:{num_soap}')
                count += 1
print(f'总共有{count}种购买组合')    # 44

9. ⼀张纸的厚度⼤约是0.08mm,对折多少次之后能达到珠穆朗玛峰的⾼度(8848.13⽶)?

h_peak = 8848.13*1000
n = 1
while True:
    if 0.08*2**n >= h_peak:
        print(f'需要对折{n}次')
        break
    n += 1

10. 古典问题:有⼀对兔⼦,从出⽣后第3个⽉起每个⽉都⽣⼀对兔⼦,⼩兔⼦⻓到第三个⽉后每个⽉⼜⽣⼀对兔⼦,假如兔⼦都不死,问(前20个)每个⽉的兔⼦总数为多少?

f1 = 0
f2 = 2
for i in range(1, 21):
    print(f'第{i}个月的兔子总数为:{f2}')
    value = f1 + f2
    f1 = f2
    f2 = value

11. 将⼀个正整数分解质因数。例如:输⼊90,打印出90=2x3x3x5。

12. 某个公司采⽤公⽤电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后⽤和除以10的余数代替该数字,再将第⼀位和第四位交换,第⼆位和第三位交换。求输⼊的四位整数加密后的值 

num = input('请输入四位整数:')
one = (int(num[0]) + 5) % 10
two = (int(num[1]) + 5) % 10
three = (int(num[2]) + 5) % 10
four = (int(num[3]) + 5) % 10
one, four = four, one
two, three = three, two
print(one, two, three, four)

13. 将⼀个正整数分解质因数。例如:输⼊90,打印出90=2x3x3x5。

14. 本⾦10000元存⼊银⾏,年利率是千分之三。每过1年,将本⾦和利息相加作为新的本⾦。计算5年后,获得的本⾦是多少。

money = 10000
rate = 0.003
for i in range(5):
    money += money * rate
print(money)

15. 输⼊⼀个整数,计算它各位上数字的和。(注意:输⼊的整数可以是任意位)

money = 10000
rate = 0.003
for i in range(5):
    money += money * rate
print(money)

16. 求两个数的最⼤公约数和最⼩公倍数。(提示:公约数⼀定⼩于等于两数中的⼩的那个数,且能同时被两个数整除;公倍数⼀定⼤于等于两数中的⼤数,且是⼤数的倍数⼜能被两数中的⼩数整除)

# 两个数的乘积 = 最大公约数 * 最小公倍数
a = int(input('请输入第一个数:'))
b = int(input('请输入第二个数:'))

max_value = max(a, b)
min_value = min(a, b)
max_division = 1
# 公约数方法一:暴力求解
for i in range(min_value, 0, -1):
    if a % i == 0 and b % i == 0:
        max_division = i
        break
print('最大公约数', max_division)
# 公约数方法二:更相减损法
# max_division = max_value - min_value
# while 1:
#     if max_division == min_value:
#         break
#     if max_division < min_value:
#         max_division, min_value = min_value, max_division
#     max_division -= min_value
# print('最大公约数', max_division)

print('最大公约数', a * b // max_division)

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值