Python 大一复习,上机考试大题(1)

📅 2026/7/6 14:53:30
Python 大一复习,上机考试大题(1)
1.输入输出格式化:1.基础知识1.输入输出函数输入函数input(和输出函数print(2.注释单行注释#多行注释内容3.算数运算运算符描述示列(a10,b15)/-运算两个数相加/相减ab/a-b输出25/-5*或者/两个数相乘/相除a*b或b/a输出150/1.5%取余b%a输出:5**幂运算返回x的y次幂a**b输出结果100000000.....(10的15次方)//取整除运算9//24-9//2-54.赋值运算ab就理解成aab像什么*/同理5列题1.已知半径求圆的周长和面积结果保留3位小数输入输出格式化。print(请输入) ainput(半径) afloat(a) s3.14*a*a c3.14*a*2 print(该圆的面积和体积,format(c,.3f),format(s,.3f)) print(该圆的面积%.3f和体积%.3f%(s,c))math.pow (x,y)可以计算x的y次方math.pi 可以表示Πimport math piemath.pi print(请输入) ainput(半径) afloat(a) spie*(math.pow(a,2)) cpie*a*2 print(该圆的面积和体积,format(c,.3f),format(s,.3f)) print(该圆的面积%.3f和体积%.3f%(s,c))2.输入一个三位数判断其是否是水仙花数。所谓水仙花数是一个n位数其每位上的数字的n次方等于其本身如370 3**3 7**3 0**3、153 1**3 5**3 3**3。(提示使用整除和模除想办法拿到个位十位和百位)附加思考一下如果是n位数的水仙花数怎么进行判断呢ainput(输入一个三位数) ilen(a) if i!3: print(这不是一个三位数) else : aint(a) da%10 b(a//10)%10 ca//100 if ad**3b**3c**3: print(a为水仙花数)除了用整除和模除取出十位与百位还可以用for循环取出数在转化为int类型y0 c0 ainput(输入一个数) ilen(a) for j in a: jint(j) y1 if yi: cj**3 aint(a) if ca: print(a为水仙花数)2.流程与控制语句1.基础知识1.if/elif/else1.分支结构if 表达示语句块12.双分支结构if 表达式代码块1else:代码块23.多分支结构if 表达式1代码块1elif 表达式2 :代码块2.................elif 表达式n:代码块nelse:代码块n12.循环嵌套while/for3.列题1.用户输入0、1、2分别代表石头、剪刀、布电脑通过random函数随机生成012下面我们来模拟用户和计算机的猜拳比赛。提示总共有三种情况平局输赢导入random模块使用random.randint(0, 2)生成随机数012。如下import randomnum random.randint(0, 2)要求输入与输出要包含相应的中文提示,即双方出的什么并且对局情况如何使用if elif else语句完成。import random num random.randint(0, 2) aint(input(Enter a number)) if a2: print(你输入的是一个无效数字) else: if anum: print(平局) elif (a2 and num0)or (a1 and num2)or (a0 and num1): print(我赢了) else: print(我输了)2.用for嵌套循环输出9 x 9乘法表但是只显示乘积为偶数的算式如果乘积是奇数使用--替代。注意输出结果要有跟9 x 9乘法表一样的结构在print函数中使用end如下面部分示例示例--1×22 2×24-- 2×36 --1×44 2×48 3×412 4×416-- 2×510 -- 4×520 --1×66 2×612 3×618 4×624 5×630 6×636for i in range(1, 10): for j in range(1, i 1): if (i * j) % 2 0: print(f{j}×{i}{i * j}, end\t) else: print(--, end\t) print()3.从 0~30逐个遍历查找所有满足下述条件的数1不包含数字7即将数字转化为字符串判断并使用 in 逻辑运算符;2找到20个符合条件的数并在一行中展示即没有换行使用一个计数变量;提示使用break和continuecount 0 for num in range(0, 31): if 7 in str(num): continue print(num, end ) count 1 if count 20: break3.字符串与列表1.字符串功能分类判断类startswith()、endswith()、isalnum()、isalpha()、isdigit()、islower()、isupper()、istitle()等用于检测字符串特性。查找类find()、rfind()、index()、rindex()、count()用于定位子串位置或统计次数。转换类lower()、upper()、capitalize()、title()、swapcase()用于大小写及格式转换。处理类strip()、lstrip()、rstrip()、replace()、split()、splitlines()、join()用于去除、替换、分割与合并字符串。对齐类center()、ljust()、rjust()、zfill()用于格式化输出对齐。2.对字符串的简单处理text Hello World # 1. 索引与切片 print(text[0]) # H print(text[1:5]) # ello # 2. 拼接与重复 print(text !!!) # Hello World!!! print(text * 2) # Hello WorldHello World # 3. 查找与统计 print(text.find(o)) # 4 print(text.count(l)) # 3 # 4. 大小写转换 print(text.lower()) # hello world print(text.upper()) # HELLO WORLD print(text.swapcase()) # hELLO wORLD # 5. 去除空格 print( hi .strip()) # hi # 6. 替换 print(text.replace(World, Python)) # Hello Python # 7. 分割与合并 parts text.split( ) print(parts) # [Hello, World] print(-.join(parts)) # Hello-World # 8. 格式化 print({} loves {}.format(Alice, Python)) print(f{Alice} loves {Python})2.列题据示例字符串对字符串进行以下操作1去除字符串首尾“*”将所有字母转换为小写将字符串中的逗号“”替换为空格输出结果。下述题目都是基于1的结果2统计字符串中字母个数、数字个数函数调用方法分别是s.isalpha()、s.isdigit()并每个字母逐一判断输出结果3统计字符串中“o”出现的次数输出结果4将字符串按空格分割成单词列表输出结果5输出字符串长度输出结果6将所有单词用“- ”连接成新字符串并输出输出结果示例字符串*Hello,World 123,Python 456*输出示例处理后字符串hello world 123 python 456字母个数16数字个数 6字符o出现次数3单词列表 [hello, world, 123, python, 456]字符串长度5连接结果hello-world-123-python-456s *Hello,World 123,Python 456* s s.strip(*) s s.lower() s s.replace(,, ) # 将逗号替换为空格 print(处理后字符串:, s) letters 0 # 字母计数 digits 0 # 数字计数 for ch in s: if ch.isalpha(): # 判断是否为字母 letters 1 elif ch.isdigit(): # 判断是否为数字 digits 1 print(字母个数:, letters) print(数字个数:, digits) count_o s.count(o) # 统计某个字符出现次数 print(字符o出现次数:, count_o) words s.split() # 默认按空格分割 print(单词列表:, words) print(单词个数:, len(words)) new_str -.join(words) print(连接结果:, new_str)根据示例列表对列表进行以下操作后逐个输出员工的月薪。1添加一名月薪3000的员工至列表末尾2插入一名月薪4500的员工到列表中索引为2的位置3移除列表中最后一个数据并显示移除的值4将列表中的第二个数据的值增加1005删除列表中第5个数据6找到月薪最高的员工(可使用max函数)输出哪名员工的月薪最高示例列表salary [5200,10000,4700,3860,1200,8500]输出示例员工1的薪水是......员工2的薪水是......注意没有员工0salary [5200,10000,4700,3860,1200,8500] # 在列表末尾添加新数据3000 salary.append(3000) # 在列表中索引为2的位置添加新数据4500 salary.insert(2,4500) # 移除列表中最后一个数据并显示移除数据的值 data salary.pop() # 将列表中第2个数据的值增加100 salary[1] salary[1] 100 # 删除列表中的第5个数据 del salary[4] # 找到工资最高的员工 index_max_salary salary.index(max(salary)) print(f 员工{index_max_salary1}的薪水最高 ) # 打印员工的月薪 for item in salary: print(f 员工{salary.index(item)1}的薪水是{item} )手动输入一行英文句子找出出现次数最多的字符。(加分项如果出现次数相等取最后出现的字符)。提示用两个列表进行分别存储字符和频次不允许使用字典数据结构。比如实例一中两个列表最后的值分别是[a,b,c]、[2,3,2]然后可以使用for循环找出最大频次的索引也可以使用max函数和index函数找出最大频次索引那么也就找到了字符的索引。示例1aabbbcc输出出现次数最多的字符是b频次是3示例2aabbbccc输出出现次数最多的字符是c频次是3#方法1 s input( 请输出单词 ) chars [] # 存字符 counts [] # 存次数 for ch in s: #统计次数 if ch in chars: index chars.index(ch) counts[index] 1 else: chars.append(ch) counts.append(1) max_num 0 max_char for i in range(len(counts)): if counts[i] max_num: # 包含等于才能找到最后出现的字符 max_num counts[i] max_char chars[i] print(f 输出次数最多的字母为{max_char},频率为{max_num} ) # 方法2 s input( 请输出单词 ) max_num 0 max_char for ch in s: num s.count(ch) if num max_num: max_num num max_char char print(f 输出次数最多的字母为{max_char},频率为{max_num} ) #方法3 s input( 请输出单词 ) dict {} for ch in s: #统计次数 if ch in dict: dict[ch] 1 else: dict[ch] 1 max_num 0 max_char for ch in s: if dict[ch] max_num: # 包含等于才能找到最后出现的字符 max_num dict[ch] max_char ch print(f 输出次数最多的字母为{max_char},频率为{max_num} )