之前学了语法知识,很长时间过去了,不做题跟本啥也想不起来,此博客主要为了
回忆语法
,找了一些水题来练习。
货币系统
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]