Python编程练习

1. 编写程序,实现判断用户输入账号,密码是否正确。

提示:预先设定一个账号和密码,如果账号和密码都正确,就显示“Hello
Python”,否则,显示账号或密码输入有误。

username = 'admin'
passwd = '123456'
user_name = input('请输入用户名')
pass_wd = input('请输入密码')
if user_name == username and pass_wd == passwd:
    print('Hello Python')
else:
     print('账号或密码输入有误')

进阶版,如果密码输入错误有三次重新输入的机会

username = 'admin'
passwd = '123456'
for i in range(0, 3):
    user_name = input('请输入用户名')
    pass_wd = input('请输入密码')
    if user_name == username and pass_wd == passwd:
        print('登录成功')
        break
    elif user_name != username or pass_wd != passwd:
        if i <2:
            print('用户名密码错误请重新输入')
        else:
            print("账户已被锁定")

2. 使用 while 循环打印出九九乘法口诀。

方法一:使用while循环

i = 1
while i <= 9:
    j = 1
    while j <= i:
        print('%d * %d =%d' % (i, j, i * j), end='\t')
        j = j + 1
    i = i + 1
    print()

这里在输出格式的时候,我一开始使用的是,但是会报错python3.5以上的版本不支持这种格式的输出。
方法二:使用for循环

for i in range(1, 10):  # type: int
    for j in range(1, i + 1):
        print(i,"*",j,"=",i * j, "", end='')
    print("")

3. 使用 for 循环打印一个正立实心等腰三角形。

n = int(input('请输入三角形的高度:'))
for i in range(n):
    for j in range(n-1):
        print("",end="")
    for k in range(2*i+1):
        print("*",end="")
    print()

4. 输入年份,编程判断是否为闰年。

闰年的判断:年份可被4整除但不能被100整除,或者能被400整除

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

5. 请根据 BMI 公式(体重(千克)/(身高(米)*身高(米)))帮小明计

算他的 BMI 指数,并根据 BMI 指数范围输出对应的结果:
低于 18.5:过轻
18.5-25:正常
25-28:过重
28-32:肥胖
高于 32:严重肥胖
要求:在控制台中输入身高与体重,并输出结果。

high = eval(input('请输入你的身高(m):'))
weight = eval(input('请输入你的体重(kg)'))

BMI = float(weight / high ** 2)

if BMI < 18.5:
    print('过轻')
elif 18.5 <= BMI < 25:
    print('正常')
elif 25 <= BMI < 28:
    print('过重')
elif 28 <= BMI <= 32:
    print('肥胖')
else:
    print('严重肥胖')

这里要注意身高的输入是m单位!

6. 利用下面的计算公式计算 e 的近似值,要求最后一项小于 10-6(-6次方)

image.png

i = 1
n = 1
e = 1
while 1 / n >= pow(10, -6):
    n *= i
    e += 1 / n
    i += 1
print('e的值近似于', e)

:::warning
pow(x, y)其中,x和y可以是任意实数或复数,x表示底数,y表示指数。pow()函数返回x的y次幂的结果。
:::

7.行李托运

weigh = int(input('你的行李重量为:(千克)'))
if weigh<20:
    print("免费托运")
elif weigh<30:
    weigh = 5 * (weigh - 20)
    print("您的运费是", weigh , "元")
elif weigh<40:
    print("您的运费是" ,  10 * (weigh - 30) , "元")
elif weigh<50:
    print("您的运费是" ,  15 * (weigh - 40) , "元")
else:
    print("50kg以上不允许个人携带")

8.百元百鸡

用_100元_钱买100只鸡,其中公鸡5元1只,母鸡3元1只,小鸡1元3只,要求每种鸡至少有1只,求公鸡、母鸡、小鸡各买了多少只

cost = 0
for i in range(1,21):
    for j in range(1,34):
        k = 100 - i - j
        cout = i * 5 + j * 3 + k / 3
        if cout==100 and k%3==0 :

9.AQI空气质量等级和户外活动建议

AQI = int(input('请输入AQI的值:'))
if AQI > 0:
    if AQI <= 50:
        print('空气质量:一级(优)')
        print('活动建议:各类人群可正常活动')
    elif AQI <= 100:
        print('空气质量:二级(良)')
        print('活动建议:极少异常敏感人群应减少户外活动')
    elif AQI <= 150:
        print('空气质量:三级(轻度污染)')
        print('活动建议:儿童、老年人及心脏病、呼吸系统疾病患者应减少长时间、高强度的户外活动')
    elif AQI <= 200:
        print('空气质量:四级(中度污染)')
        print('活动建议:儿童、老年人及心脏病、呼吸系统疾病患者避免长时间、高强度的户外活动,一般人群适量减少户外活动')
    elif AQI <= 300:
        print('空气质量:五级(中度污染)')
        print('活动建议:儿童、老年人及心脏病、肺病患者停止户外活动,一般人群减少户外活动')
    else:
        print('空气质量:六级(严重污染)')
        print('活动建议:儿童、老年人及心脏病、病人停留室内,避免体力消耗,一般人群避免户外活动')
else:
    print('数据输入错误!')

10.人机猜拳

import random
user_count = 0
computer_count = 0
while True:
    print('请输入一个整数(1:拳头,2:剪刀,3:布)', end='')
    user = int(input())
    if user <1 or user > 3:
        print('输入错误,请重新输入!')
        continue
    computer = random.randint(1,3)
    print('用户出拳:',user)
    print('计算机出拳:',computer)
    if (user==1 and computer == 2) or (user==2 and computer == 3) or (user==3 and computer == 1):
        user_count += 1
        print('用户赢',user_count,'次')
        if user_count == 3:
            print('用户先赢三次,恭喜用户取得胜利!')
            break
    elif (computer == 1 and user == 2) or (computer == 2 and user == 3) or (computer == 3 and user == 1):
            computer_count += 1
            print('计算机赢',computer_count,'次')
            if computer_count == 3:
                print('计算机先赢三次,恭喜计算机取得胜利!')
                break
    else:print('平局')

:::warning
random模块,用于生成伪随机数,之所以称之为伪随机数,是因为真正意义上的随机数(或者随机事件)在某次产生过程中是按照实验过程中表现的分布概率随机产生的,其结果是不可预测的,是不可见的。
:::

11.键盘输入字符串,去重排序

str = input('请输入一个字符串')
str1=set(str)
list1 = list(str1)
list1.sort()   
s="".join(list1)
print(s)

image.png
:::warning
set(),是集合容器,集合里面的元素都是不重复的,所以可以使用这个特点对输入的数据进行去重,然后使用sort进行排序,sort()没有返回值,print(list1.sort()),会输出none!
:::

m = [1,5,23,0,14]
m.sort()
print(m)

12.已知 list-a=[1,2,3,4,5,6],请通过两种方法实现,使

list=[6,5,4,3,2,1]。

#方法一:
list_a=[1,2,3,4,5,6]
print('list=',list_a[::-1])

#方法二:
list_a=[1,2,3,4,5,6]
list_a.reverse()
print('list=',list_a)

image.png

13.给定任意奇数个整数,要求计算中间数(数值大小处于中间的数)并输
出。

arr = input("请输入奇数个整数,用空格分隔开:")
arr = arr.split()
arr.sort()
index = len(arr)
print("中间数为:",arr[int(index/2)])

image.png

14.要求输入一个字符串,然后将字符串中的所有字母全部后移
一位,最后一个字母移到字符串的开头,最后输出新的字符串。

arr = []
result = ""
old_str = input("请输入全为字母的字符串:")
for i in old_str:
    arr.append(i)
last = arr[-1]
arr.remove(last)
arr.insert(0,last)
for str in arr:
    result = result + str
print(result)

image.png

15.删除列表中的所有素数。

arr = [26,9,62,7,91,5,22,67,27,45,6,11]
brr = []
print("删除素数前的数组为:",arr)
for element in arr:
    tag=True
     # 质数大于 1
    if element > 1:
        # 查看因子
        for i in range(2, element):
            if (element % i) == 0:
                tag=False
                break
        if(tag==True):
            brr.append(element)
            arr.remove(element)
print("删除素数后的数组为:",arr)
print("被删除的素数有:")
for i in brr:
    print(i,end=" ")

image.png

  1. 现有一个二维列表,通过遍历:
    [ [ ‘Jack’, 90 , 89 , 89 ],
    [ ‘张三’, 93 , 82 , 91 ],
    [ ‘李四’, 97 , 86 , 79 ],
    [ ‘王五’, 89 , 81 , 90 ],
    [ ‘Helen’, 77 , 85 , 85 ] ]
    计算出每个学生的平均成绩(四舍五入取整)并输出,输出总成绩最高的学生
    名字和他的总分。
stus = [
    [ 'Jack', 90 , 89 , 89 ],
    [ '张三', 93 , 82 , 91 ],
    [ '李四', 97 , 86 , 79 ],
    [ '王五', 89 , 81 , 90 ],
    [ 'Helen', 77 , 85 , 85 ] ]
# 计算每个学生的平均分,并将结果存储在字典中
student_averages = {}
for student in stus:
    name = student[0]
    scores = student[1:]
    average = int((sum(scores)) / 3)
    student_averages[name] = average

# 按平均分从高到低排序
sorted_averages = sorted(student_averages.items(), key=lambda x: x[1], reverse=True)

# 输出平均分最高的学生
print("{0} 的平均分为: {1}".format(sorted_averages[0][0],sorted_averages[0][1]))  #print(f"{sorted_averages[0][0]} 的平均分为: {sorted_averages[0][1]}")

image.png

17.创建一个学生选课字典,字典记录两名学生选课信息,学生姓名为键,选
择的课程用列表表示,创建完成后输出每个学生姓名及选课信息。

students={
    '刘星雨':['C语言','Python'],
    '张三':['高数','数据库'],
    '李四':['大学语文', 'Python'],
    '小梅':['日语', 'Linux'],
    '吴刚':['英语', '数据结构'],
}

def print_students(students):
    for student,courses in students.items():
        print("{0}同学,选修了 {1}".format(student,courses))  # print(f"{student}同学,选修了 {courses}")

print_students(students)

python中f"“和”“.format()是等价的,前者更加简洁,
但是在低版本python中并不支持f”",会导致语法错误。
出现该错误时,需要使用高版本python或者改为.format()以兼容。

image.png

18.实现删除列表重复元素的功能。

list_a = [1, 2, 2, 3, 4, 4, 4, 5]
list_b=list(set(list_a))
print("原数组为:",list_a)
print("删除重复元素后:",list_b)

image.png

19.用于统计字符串中每个字母的出现次数(字母忽略大小写),
按照{‘a’:3, ‘b’:3}的个数输出。

str1 = input('请输入一个只包含字母的字符串:')
# 需要转换统一(大写,小写)upper lower
str2 = str1.lower()
dic_fin = {}
for s in str2:
    # 查找s字母出现的次数
    time = str2.count(s)
    # 往字典中增加元素
    dic_fin[s] = time
print(dic_fin)

image.png

  1. 编写一个函数,其参数为一个二维列表:使用循环将其内部所有元素转
    换为整数输出。
    如:输入 testMatrix = [ [‘1’, ‘2’, ‘3’], [‘4’, ‘5’, ‘6’], [‘7’, ‘8’,
    ‘9’] ] 输出 return->[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
def convert_list(lst):
    for i in range(len(lst)):
        for j in range(len(lst[i])):
            lst[i][j] = int(lst[i][j])
    return lst

my_list = [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
print("转换前的数组",my_list)
converted_list = convert_list(my_list)
print("转换后的数组",converted_list) 

image.png

  1. 编写一个函数,接受 n 个数字参数,n 的大小不定,在函数内部计算这 n
    个数字的积并返回该结果。
arr = input("请输入n个整数,用空格分隔开:")
arr = arr.split()
result = 1
for i in arr:
    result=result*int(i)
print("n个数相乘的结果:",result)

image.png

  1. Python 实现字符串与指定密钥循环异或加解密。

异或运算在很多密码学算法中都有不同程度的应用,其原理在于一个数和另一个数连续异或两次仍得到原来的数。编写函数,接收一个字符串 s 和一个字符k,通过将字符串 s 中每个字符与字符 k 进行异或运算实现文本的加密和解密。
如:输入(“Python”, “1”)
输出“aHEY^
输入(“aHEY^
”, “1”)
输出“Python”

def xor_cipher(s, k):
    """
    对字符串s进行异或加密和解密,密钥为字符k。
    :param s: 要加密或解密的字符串
    :param k: 密钥字符
    :return: 加密后的字符串或解密后的字符串
    """
    # 确保密钥至少与明文一样长,重复密钥直到与明文长度相同
    if len(k) < len(s):
        k *= (len(s) // len(k) + 1)

    # 异或操作
    result = ""
    for i in range(len(s)):
        result += chr(ord(s[i]) ^ ord(k[i % len(k)]))

    return result


# 示例使用
plaintext=input("请输入密文:")
key = input("请输入密钥:")

# 加密
ciphertext = xor_cipher(plaintext, key)
print("加密后的文本:",ciphertext)

# 解密
decrypted_text = xor_cipher(ciphertext, key)
print("解密后的文本:",decrypted_text)

image.png

  • 24
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值