py字典合集
- 7-1 Python猜数游戏
- 7-2 jmu-python-分段函数
- 7-3 循环求e的近似值(高教社,《Python编程基础及应用》习题6-7)
- 7-4 jmu-python-判断是否构成三角形
- 7-5 jmu-python-输入输出-计算字符串中的数
- 7-6 jmu-python-随机生成密码
- 7-7 jmu-python-重复元素判定
- 7-8 jmu-python-从列表中删除元素
- 7-10 找出字符串中出现次数最多的字符
- 7-11 华氏温度到摄氏温度的转换(高教社,《Python编程基础及应用》习题3-9)
7-1 Python猜数游戏
猜数字游戏编程:计算机随机产生一个0~100以内的正整数,用户输入一个数对其进行猜测,程序对其与随机产生的被猜数进行比较,并提示大了(“Too big”)、小了(“Too small”),还是相等(“Lucky You!”)。如果猜到,则结束程序。如果超过8次都没有猜到,则提示“Game Over!”,并结束程序。如下图:
提示:随机因子seed设置为1(防止调试错误)
输入格式:
每行给出一个用户的输入,直到猜中或者超过8次还没有猜中。
输出格式:
每次在一行中输出相应的猜测结果,直到输出猜对的结果“Lucky You!”或“Game Over!”则结束。
输入样例:
56
25
12
20
16
18
17
输出样例:
在这里给出相应的输出。例如:
Too big
Too big
Too small
Too big
Too small
Too big
Lucky You!
思路:
很简单,首先生成随机数,然后套个while循环次数设定为8次,每次循环加一,然后判断输入的字符,成功修改flag并break。
代码区:
import random
random.seed(1)
cnt = 0
flag = 0
res = random.randint(0, 101)
while cnt < 8:
cnt += 1
ans = eval(input())
if ans > res:
print("Too big")
elif ans < res:
print("Too small")
else:
print("Lucky You!")
flag = 1
break
if flag == 0:
print("Game Over!")
7-2 jmu-python-分段函数
本题目要求计算下列分段函数f(x)的值(x为从键盘输入的一个任意实数):
输入格式:
输入在一行中给出实数 x。
输出格式:
在一行中按“f(x)=result”的格式输出,其中x与result都保留两位小数。
输入样例:
0.76
输出样例:
f(0.76)=1.20
思路:
简单,除了输出格式需要注意其他没了
代码区:
def f(x):
if x < 3:
return 1.2
elif x == 3:
return 10
else:
return 2 * x + 1
x = eval(input())
print("f({:.2f})={:.2f}".format(x, f(x)))
7-3 循环求e的近似值(高教社,《Python编程基础及应用》习题6-7)
编写一个程序,从键盘读取k,计算e的近似值(保留10位小数)。
输入格式:
5的正整数k
输出格式:
e的近似值(保留10位小数)
输入样例:
6
输出样例:
2.7180555556
思路:
我首先定义了一个递归函数来取n!,然后就是累加。
代码区:
def f(n):
if n == 0:
return 1
return n * f(n - 1)
k = int(input())
e = 0
for i in range(k + 1):
e += 1 / f(i)
print("{:.10f}".format(e))
7-4 jmu-python-判断是否构成三角形
输入三角形的三边,判断是否能构成三角形。若能构成输出yes,否则输出no。
输入格式:
在一行中直接输入3个整数,3个整数之间各用一个空格间隔,没有其他任何附加字符。
输出格式:
直接输出yes或no,没有其他任何附加字符。
输入样例1:
3 4 5
输出样例1:
yes
输入样例2:
1 2 3
思路:
就是非常简单的判断语句。
代码区:
nums = [int(x) for x in input().split()]
if nums[0] + nums[1] <= nums[2] or nums[0] + nums[2] <= nums[1] or nums[1] + nums[2] <= nums[0]:
print("no")
else:
print("yes")
7-5 jmu-python-输入输出-计算字符串中的数
将字符串中的每个数都抽取出来,然后统计所有数的个数并求和。
输入格式:
一行字符串,字符串中的数之间用1个空格或者多个空格分隔。
输出格式:
第1行:输出数的个数。
第2行:求和的结果,保留3位小数。
输入样例:
2.1234 2.1 3 4 5 6
输出样例:
6
22.223
思路:
先全部存入列表,然后调用sum方法求和
代码区:
nums = [eval(x) for x in input().split()]
print(len(nums))
print("{:.3f}".format(sum(nums)))
7-6 jmu-python-随机生成密码
新建一个字符列表,这个列表中的内容从前到后依次包含小写字母、大写字母、数字。 形如[‘a’,…,‘z’,‘A’,…,‘Z’,‘0’,…‘9’]
建议:使用代码生成该字符列表。
分别输入随机数的种子x(整型),随机生成的密码个数n,每个密码长度m。
每个密码包含的m个字符是从上述字符列表中随机抽取 。
注意:本题不要用sample函数,否则答案错误。
输入格式:
种子x (注意:需将x转换为整数型再进行设置)
密码个数n
每个密码的长度m
输出格式:
n行密码、每行m位。
输入样例:
1
10
8
输出样例:
iK2ZWeqh
FWCEPyYn
gFb51yBM
WXaSCrUZ
oL8g5ubb
bPIa84yR
nBUbHoWC
8FJowoRo
WD8s7bA1
6J7PglOU
思路:
首先将所有大小写字母和数字(这里采用了string库中的读取字母和数字的方法)存入strList中作为总表,然后每次循环将其中下标通过随机数得出取出对应的字符存入pwd中作为密码列表,最后通过join方法来输出为字符
代码区:
import string
import random
strlist = []
str1 = string.ascii_letters + string.digits
for x in str1:
strlist.append(x)
x, n, m = int(input()), int(input()), int(input())
random.seed(x)
for i in range(n):
pwd = []
for j in range(m):
pwd.append(strlist[random.randint(0, 61)])
print("".join(pwd))
7-7 jmu-python-重复元素判定
每一个列表中只要有一个元素出现两次,那么该列表即被判定为包含重复元素。
编写函数判定列表中是否包含重复元素,如果包含返回True,否则返回False。
然后使用该函数对n行字符串进行处理。最后统计包含重复元素的行数与不包含重复元素的行数。
输入格式:
输入n,代表接下来要输入n行字符串。
然后输入n行字符串,字符串之间的元素以空格相分隔。
输出格式:
True=包含重复元素的行数, False=不包含重复元素的行数
,后面有空格。
输入样例:
5
1 2 3 4 5
1 3 2 5 4
1 2 3 6 1
1 2 3 2 1
1 1 1 1 1
输出样例:
True=3, False=2
思路:
采用了字典思想,每次出现就对应字典键值加一,如果出现2的就判断为重复。
dic.get(方法为取第一个参数的值,如不存在就即为第二个参数)
代码区:
trueL = 0
n = int(input())
for i in range(0, n):
strL = input()
dic = {}
for c in strL.split(" "):
dic[c] = dic.get(c, 0) + 1
if dic[c] == 2:
trueL += 1
break
print("True={0}, False={1}".format(trueL, n - trueL))
7-8 jmu-python-从列表中删除元素
删除列表中所有符合条件的值。
输入格式:
输入n,代表要测试n次。每次测试:
首先,输入1行字符串(字符串内的元素使用空格分隔)
然后,输入要删除的元素x。
输出格式:
输出删除元素x后的每行字符串。如果元素全部被删除,则输出空行。
注意:行尾不得有多余的空格。
输入样例:
5
1 1 1 2 1 2 1 1 1
1
1 1 1 2 2 2 1 1 1
2
ab ab ab cd cd de de
ab
1 1 1 1
1
x y x x x z
t
输出样例:
2 2
1 1 1 1 1 1
cd cd de de
x y x x x z
思路:
如果是需要删除的元素就不加入新列表,否则就加入新列表,实现删除的效果、
代码区:
n = int(input())
for i in range(0, n):
list = input().split()
ch = input()
newL = []
for x in list:
if x != ch:
newL.append(x)
print(" ".join(newL))
7-10 找出字符串中出现次数最多的字符
本题目要求读入一个字符串,统计字符串中每个字符出现的次数,输出现次数最多(输入的数据中,出现次数最多的字符唯一)的字符以及次数。
在这里给出一组输入。例如:
输入样例:
xabaaccd1ma1b
输出样例:
a,4
思路:
使用字典,将输入存入字典,然后在通过sorted进行按照值排序,最后输出
代码区:
zifu = input()
dic = {}
for x in zifu:
dic[x] = dic.get(x, 0) + 1
dicNew = sorted(dic.items(), key = lambda x: x[1])
print("{0},{1}".format(dicNew[-1][0], dicNew[-1][1]))
7-11 华氏温度到摄氏温度的转换(高教社,《Python编程基础及应用》习题3-9)
从键盘读取华氏温度,转换成摄氏温度并输出,保留1位小数。
转换公式为:c=5/9*(f-32), 其中,f为华为温度,c为摄氏温度。
输入格式:
华氏温度
输出格式:
摄低温度
输入样例:
100
输出样例:
37.8
思路:
过于简单,不讲
代码区:
n1 = eval(input())
print("{:.1f}".format(5 / 9 * (n1 - 32)))
新手上路,(几乎不会是最优解,轻点打)有错请指正;