Python练习题

这篇博客探讨了两个Python编程挑战:一是利用给定数字1、2、3、4组成互不相同且无重复的三位数的问题,二是根据企业利润计算不同提成比例的奖金总额。博客通过实例展示了问题的分析过程,包括原始和优化的代码实现。此外,还提及了读取数据和将数据写入数据库,特别是涉及CSV文件的操作。

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

  1. 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?·
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if i!=j and j!=k and i !=k:
                print(i,j,k)
            else:
                pass

  1. 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
    20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

分析:1.输入利润 2.求奖金总数

繁琐写法

i=input('请输入当月利润值(万):') 
i=float(i)
if i<=10:
    print('当月奖金为:',i*10/100)
elif i<=20:
    print('当月奖金为:', (10 * 10 / 100)+(i-10)*7.5/100)
elif i <= 40:
    print('当月奖金为:', (20 * 10 / 100) + ((i - 20) * 5 / 100) )
elif i<=60:
    print('当月奖金为:', (40 * 10 / 100) + ((i - 40) * 3 / 100))
elif i<=100:
    print('当月奖金为:', (60 * 10 / 100) + ((i - 60) * 3 / 100))
else:
    print('当月奖金为:', (100 * 10 / 100) + ((i - 100) * 1 / 100))

优化后写法

# !/usr/bin/python
# -*- coding: UTF-8 -*-
i=float(input('请输入利润(万):'))
arry=[100, 60, 40, 20, 10,0]
rate=[0.01, 0.015,0.03, 0.05, 0.075, 0.1]
sum=0
for k in range(0,6):
    if i>arry[k]:
        sum +=(i-arry[k])*rate[k]
        print((i-arry[k])*rate[k])
        i=arry[k]
print(sum)
  1. 读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。
k=1
for i in range(1,51):
    if k<=7:
        print('数字:',i)
        while i > 0:
            print('*',end='')
            i -= 1
        k+=1
        print('\n')
    else:
        break
  1. 打开city文件并将其写入数据库表

打开文件,连接数据库

import pymysql
db=pymysql.connect(host='47.96.235.136',
    port=3307,
    user='dbmon',
    passwd='123456',
    db='sakila'
    charset='utf8' #charset很重要,不添加在sql语句插入汉字时报错。
    #UnicodeEncodeError: 'latin-1' codec can't encode characters in position 36-41: ordinal not in range(256)
)
cur = db.cursor()
#cur.execute("create table city1(city_id int ,city varchar(50),country_id int ,last_update timestamp)")
with open('city.txt','r') as df:
    for line in df.readlines():
        if line:
            list=[]
            list=line.encode('utf-8').decode().strip().replace('\"','').split('\t')
            print(type(list))
            sql='insert into city1 values (%s,%s,%s,%s)'
            cur.execute(sql , list)
            db.commit()

cur.close()
db.close()
print('完成')
  1. 打开city.csv文件,并写入数据库
import pymysql
db=pymysql.connect(host='47.96.235.136',
    port=3307,
    user='',
    passwd='',
    db='sakila'
)
cur = db.cursor()
#cur.execute("create table city1(city_id int ,city varchar(50),country_id int ,last_update timestamp)")
with open('city.csv','r') as df:
    for line in df.readlines():
        if line:
            list=[]
            list=line.encode('utf-8').decode().strip().replace('\"','').split(sep=',')
            print(type(list))
            print(list)
            sql='insert into city1 values (%s,%s,%s,%s)'
            cur.execute(sql , list)
            db.commit()

cur.close()
db.close()
print('完成')
  1. 使用pandas打开csv文件,并将结果集转化为列表
import pandas as pd
import numpy as np
df=pd.read_csv('city.csv',header=None)
count=df.count()[0]
j=0
while j < count:
    line = df.iloc[j, :]
    line_str = []
    for i in line:
        line_str.append(i)
    print(line_str)
    j+=1
Python 练习题是指设计用来提高编程技能和加深对Python语言理解的编程问题。这些练习题通常涉及不同的Python编程概念和技巧,从基础语法到高级主题都有涵盖。以下是一些常见的Python练习题类型: 1. 基础语法练习:这些练习帮助初学者熟悉Python的基本语法,比如变量声明、数据类型、控制结构(if-else语句、循环)以及函数定义等。 2. 数据结构操作:涉及Python内置的数据结构,如列表(list)、字典(dict)、元组(tuple)和集合(set)的操作练习,包括增删改查等。 3. 面向对象编程:包含类和对象的定义、继承、多态和封装等面向对象编程概念的实践题目。 4. 错误和异常处理:学习如何处理在代码执行过程中可能遇到的错误和异常。 5. 文件操作:练习如何在Python中读写文件,包括文本文件和二进制文件的操作。 6. 模块和包:学习如何导入和使用Python标准库中的模块,以及如何创建和使用自定义包。 7. 高级特性:练习Python的高级特性,比如列表推导式、生成器、装饰器和上下文管理器等。 8. 数据处理:包含使用Python进行数据分析和处理的练习,如使用Pandas库操作数据框(DataFrame)。 9. Web开发基础:涉及使用Flask或Django等框架进行简单的Web应用开发。 10. 测试:编写单元测试来验证代码的正确性。 通过解决这些问题,可以系统地提升Python编程技能,并在实际开发中更加得心应手。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值