Python习题练习 + 简单语法总结

之前学了语法知识,很长时间过去了,不做题跟本啥也想不起来,此博客主要为了 回忆语法 ,找了一些水题来练习。

货币系统

在这里插入图片描述

money = input()
if money[0] in ['R', 'r']:
    U = eval(money[3: ]) / 7.01
    print("RMB{:.2f}".format(U))
elif money[0] in ['U', 'u']:
    R = 7.01 * eval(money[3: ])
    print("USD{:.2f}".format(R))


语法总结:
1、使用input输入字符串;
2、eval()方法将字符串类型的值转换为数字类型的值,也可以直接用来提取用户输入的多个值,得到多个以逗号分隔的数值(如a,b = eval(input()))
3、格式化函数str.format,基本语法是通过{}和:来表示,如 {:.2f}表示保留小数点后两位。

统计字符串中每个字符出现的次数

str = "Sometimes I believe, at times I'm rational"
str = str.replace(" ", "")
dict = {}

for i in str:
    dict[i] = str.count(i)
print(dict)

语法总结:
1、str.replace()可以替换字符;
2、dict{}是字典类型,我们最终要的结果就是字典类型;
3、str.count()用于统计字符串里某个字符出现的次数,默认为从开始到结尾。
4、round()返回浮点数x的四舍五入值(此题未使用,这里只是复习),floor() 返回数字的下舍整数, 运算符 // 也是向下取整。

复数运算

在这里插入图片描述

z = 4.53e-2 + 9j
print(z.real)
print(z.imag)

1、z.real返回实部,z.imag返回虚部

判断是否回文

a = input()
if a[::-1] == a:
    print("是回文")
else:
    print("不是回文")

语法总结:1、列表切片a[: : -1]相当于将原字符串倒序

分段函数

在这里插入图片描述
在这里插入图片描述

import math
x = eval(input())
if x > 2:
    print("y=" + "{:.3f}".format(abs(1.23 * x - 1.79)))
elif x == 2:
    print("y=" + "{:.3f}".format(math.e ** x + x ** 3))
else:
    print("y=" + "{:.3f}".format(math.cos(x)))

语法:1、math.e 和,math.cos();

英制单位英寸与公制单位厘米换算

在这里插入图片描述
在这里插入图片描述

a = input()
if a[-2:] == "英寸" or a[-2:] == "in":
    b = eval(a[:-2]) * 2.54
    print(a[:-2] + "英寸=" + "{:.2f}".format(b)+"厘米")
elif a[-2:] == "厘米" or a[-2:] == "CM" or a[-2:] == "cm":
    b = eval(a[:-2]) / 2.54
    print(a[:-2] + "厘米=" + "{:.2f}".format(b)+"英寸")
else:
    print("单位无效")

语法:注意a[-2: ]和a[:-2]的区别,一个表示后两个字符,一个表示除后两个之外的字符

二进制转换为十进制

在这里插入图片描述
方法一:秦九韶算法:k进制转十进制的方法是,从高位到低位,不断乘k,然后加上这一位
在这里插入图片描述

a = input()
d = 0
for ch in a:
    d = d * 2 + int(ch)
print(d)

方法二:按位展开相加

s = input()
length = len(s)
d = 0
for i in range(length):
    d = d + int(s[i]) * 2 ** (length - 1 - i)
print(d)

方法三:非循环方法(eval)

print(eval('0b' + input()))

方法四:非循环方法(int)

print(int(input(), 2))

分类统计字符个数

在这里插入图片描述

str = input()
str = str.lower()

letter, digit,other = 0, 0, 0
for x in str:
    if 'a' <= x <= 'z':
        letter += 1
    elif '0' <= x <= '9':
        digit += 1
    else :
        other += 1
print("letter={}, digit={}, other={}".format(letter, digit, other))

函数表示:(与题目稍有不同)

def count(s):
    s=s.lower()
    n=len(s)
    lettercount=0
    digitcount=0
    for n in s:
        if 'a' <= n <= 'z':
            lettercount=lettercount+1
        elif '0' <= n <= '9':
            digitcount=digitcount+1
    return(lettercount,digitcount)
s = input()
lettercount,digitcount=count(s)
print("英文字母个数={},数字个数={}".format(lettercount,digitcount))

用户登录

在这里插入图片描述

error_num = 0
while error_num < 3:
    name = input()
    password = input()
    if (name == "admin" or name == "administrator") and password == "123456":
        print("登录成功")
        break
    else:
        print("登录失败")
        error_num += 1

1-n的阶乘之和

在这里插入图片描述

def fact(n):
    s = 1
    for i in range(1, n + 1):
        s *= i
    return s
def main():
    n = eval(input())
    s = 0
    for i in range(1, n + 1):
        s = s + fact(i)
    print(s)
main()

判断元素在列表中出现的次数

在这里插入图片描述

def Count(lst, n):
    return lst.count(n)
lst = [8,6,8,10,8,20,10,8,8]
x = eval(input())
print("{}出现{}次".format(x, Count(lst, x)))

统计列表元素

在这里插入图片描述

a = eval(input())
b = eval(input())
c = eval(input())
d = eval(input())
e = eval(input())
list = [a, b, c, d, e]
print(list)
ave = (a + b + c + d + e) / 5
print("列表元素的平均数是{}".format(ave))
sum = 0
for i in list:
    if i > ave:
       sum += 1
print("高于平均数的元素个数是{}".format(sum))
list.sort(reverse = True)#降序
print(list)

语法总结:
1、list.sort()用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数.reverse – 排序规则,reverse = True 降序, reverse = False 升序(默认)

购物

在这里插入图片描述

d = {"egg":6,"meat":40, "sausage":12 }
Sum=0
for a,b in d.items():
    c=eval(input())
    money=int(b)*c
    Sum+=money
    print("{}斤{}".format(c,a),end=",")    
print("共计{:.2f}元".format(Sum))

语法总结:
1、d.items()以列表返回可遍历的(键, 值) 元组数组
比如:

d={1:"a",2:"b",3:"c"}
result=[]
for k,v in d.items():
    result.append(k)
    result.append(v)

print(result)

输出[1, 'a', 2, 'b', 3, 'c']

在这里插入图片描述

dic={"apple":"苹果","pear":"梨","cat":"猫","dog":"狗"}
a = input()
print("{}-{}".format(a,dic.get(a,"error")))

语法总结:
1、字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值。
dict.get(key, default=None)
在这里插入图片描述

字母频率统计

在这里插入图片描述

s="Hooray! It's snowing! It's time to make a snowman.James runs out. He makes a big pile of snow. "
s=s.lower()
d={}
for i in s:
    if i not in [' ','!','.',',','\'']:
        d[i]=d.get(i,0)+1
for key,value in d.items():
    print("{}:{}".format(key,value))

英汉字典

在这里插入图片描述

dic={"apple":"苹果","pear":"梨","cat":"猫","dog":"狗"}
a = input()
print("{}-{}".format(a,dic.get(a,"error")))

1、语法总结:dict.get(key, default=None)
2、key – 字典中要查找的键。
3、default – 如果指定键的值不存在时,返回该默认值值。

十进制转二进制、八进制、十六进制

a = int(input())
print("转换为二进制为:{}".format(bin(a)))
print("转换为八进制为:{}".format(oct(a)))
print("转换为十六进制为:{}".format(hex(a)))

在这里插入图片描述
bin():其他进制转二进制
oct():其他进制转八进制
int():其他进制转十进制
hex():其他进制转十六进制

快速排序

n = int(input())
s = list(map(int, input().split()))

def quick_sort(q, l, r):
    if l < r:
        i = l - 1
        j = r + 1
        x = q[(i + j) // 2]
        while i < j:
            while 1:
                i += 1
                if q[i] >= x : break
            while 1:
                j -= 1
                if q[j] <= x : break
            if i < j :
                q[i], q[j] = q[j], q[i] # 交换值

        quick_sort(q, l, j)
        quick_sort(q, j + 1, r)

quick_sort(s, 0, n - 1)
print(' '.join(map(str, s)))

语法总结:
1、python join()方法:用于将序列中的元素以指定的字符连接生成一个新的字符串,如此题用空格连接每个字符。
2、python map()的常见用法:

  • map()函数可以格式化输入一行整数:
a = list(map(int,input().split()))
  • 第一个参数接收一个函数名,第二个参数接收一个可迭代对象,也可以进行类型转换
list4 = [1,2,3,4]
def add(a):
    a += 1
    return a
list5 = map(add,list4)
print list5

结果为[2,3,4,5]

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值