大学生活刚开始的时候,有很多朋友大一学的python,对于高中没有接触过编程的同学,python的学习便成了一大难题,在这里总结一些帮朋友处理问题时候写到的一些简单经典的python题目,希望可以帮到大家
1、石头剪刀布
import random
guess_list = ["石头", "剪刀", "布"]
win_combination = [["布", "石头"], ["石头", "剪刀"], ["剪刀", "布"]] #定义这两个列表
user = input("请输入你的选择(石头、剪刀、布):") #玩家输入一个猜拳种类
while user not in guess_list:
user = input("输入错误,请重新输入你的选择(石头、剪刀、布):") #如果玩家输入的不是guess_list里的,那就判断失误,重新输入
computer = random.choice(guess_list) #让电脑随机生成一个guess_list里的猜拳种类
print(f"你的选择是:{user},计算机的选择是:{computer}") #这行写着感觉好看点,说明一下玩家输入的和电脑生成的
if user == computer: #判断结果
print("平局")
else:
if [user, computer] in win_combination:
print("恭喜你赢了")
else:
print("抱歉还得练")
2、求BMI
class BMI: #定义了一个名为 BMI 的类
def __init__(self,name,age,weight,height) : #类的构造函数 __init__ 接受 name、age、weight、height作为参数
self.name = name
self.age = age
self.weight = weight
self.height = height
def getBMI(self): #getBMI 方法用于根据体重和身高计算 BMI 值
height_m = self.height/100
bmi = self.weight/(height_m**2)
return bmi
def getStatus(self): #getStatus 方法根据计算得到的 BMI 值判断身体状态,返回相应的描述
bmi = self.getBMI()
if bmi < 18.5:
return "过轻"
elif 18.5 <= bmi < 24:
return "正常"
elif 24 <= bmi < 27:
return "过重"
elif 27 <= bmi < 30:
return "轻度肥胖"
elif 30 <= bmi < 35:
return "中度肥胖"
else:
return "重度肥胖"
def getName(self):
return self.name
def getAge(self):
return self.age
def getWeight(self):
return self.weight
def getHeight(self): #getName、getAge、getWeight、getHeight用于获取实例的各个属性值
return self.height
person = BMI("小明",18,65,175) #这个是给参数赋值,如果说想改进一下用input输入值,可以自行更改
print("姓名为:", person.getName())
print("BMI 值为:", person.getBMI())
print("身体状态为:", person.getStatus())
print("年龄为:", person.getAge())
print("体重为:", person.getWeight())
print("身高为:", person.getHeight())
# 这是代码理想的运行结果
# 姓名为: 小明
# BMI 值为: 21.224489795918366
# 身体状态为: 正常
# 年龄为: 18
# 体重为: 65
# 身高为: 175
3、汉诺塔递归
i = 1
def move(pfrom, pto): #定义函数 move
global i #通过global关键字声明了变量i为全局变量,用于记录移动的步数
print("第%d步:%s ---> %s" % (i, pfrom, pto)) #打印出移动圆盘的具体步骤
i += 1
def hanoi(n, a, b, c): #定义函数hanoi,这是解决汉诺塔问题的核心函数,接受参数 n(表示要移动的圆盘数量)以及 a、b、c 分别代表三根柱子的名称
if n == 1: #当 n 等于 1 时,直接将圆盘从起始柱子 a 移动到目标柱子 c
move(a, c)
else: #当 n 大于 1 时,它通过递归调用自身来逐步完成圆盘的移动
hanoi(n - 1, a, c, b) #先将 n - 1 个圆盘从 a 借助 c 移动到 b
move(a, c) #然后将最底下的一个圆盘从 a 移动到 c
hanoi(n - 1, b, a, c) #最后再将 n - 1 个圆盘从 b 借助 a 移动到 c
n = int(input("请输入盘数:"))
print("具体走法步骤如下:")
hanoi(n, "A", "B", "C")
print("一共需走%d步" % (i - 1))
4、英文歌词频统计
def replacement(song):
song = song.replace('.', ' ').replace(',', ' ').replace('!', ' ').replace('?', ' ')
# 这一步是把所有标点符号替换成空格
words = song.split()
# 这一步是我把字符串拆分成单词列表,然后在下一步把单词储存在一个空字典里边,方便统计
value = {}
# 用循环遍历单词列表
for key in words:
# 将单词转换为小写忽略大小写差异
key = key.lower()
# 如果单词已在字典中,则增加其计数
if key in value:
value[key] += 1
# 如果单词不在字典中,则添加到字典,并设置计数为1
else:
value[key] = 1
return value
song_word = str(input("请输入你想进行词频统计的歌词: "))#输入需要进行词频统计的英文歌歌词
word_freq = replacement(song_word)# 调用我定义的函数然后计算词频
for key, value in word_freq.items():
print(f"{key}: {value}")# 打印每个单词还有出现的次数
5、词频统计
这个当时做的是对英文的自我介绍进行的词频统计,可以根据自己需求对变量命名进行修改
def replacement(self_introduction):
self_introduction = self_introduction.replace('.', ' ').replace(',', ' ').replace('!', ' ').replace('?', ' ')
# 这一步是把所有标点符号替换成空格
words = self_introduction.split()
# 这一步是我把字符串拆分成单词列表,然后在下一步把单词储存在一个空字典里边,方便统计
word_frequency = {}
# 用循环遍历单词列表
for word in words:
# 将单词转换为小写忽略大小写差异
word = word.lower()
# 如果单词已在字典中,则增加其计数
if word in word_frequency:
word_frequency[word] += 1
# 如果单词不在字典中,则添加到字典,并设置计数为1
else:
word_frequency[word] = 1
return word_frequency
my_self_introduction = ""#自己把你自我介绍放里边,复制粘贴进去就行
word_freq = replacement(my_self_introduction)# 调用我定义的函数然后计算词频
for word, freq in word_freq.items():
print(f"{word}: {freq}")# 打印每个单词还有出现的次数
6、四种图形的面积计算问题
import math
def circle_area(radius):
return math.pi * radius ** 2 # 定义了一个函数计算圆形的面积
def square_area(side):
return side ** 2 # 这个函数计算正方形的面积
def rectangle_area(length, width):
return length * width # 计算长方形的面积
def trapezoid_area(a, b, height):
return (a + b) * height / 2 # 计算梯形的面积
if __name__ == "__main__": #这块是主程序,起一个选择判断的作用
radius = float(input("请输入圆形的半径:"))
print(f"圆形的面积是:{circle_area(radius)}")#在这块对定义的圆形面积函数进行调用
side = float(input("请输入正方形的边长:"))
print(f"正方形的面积是:{square_area(side)}") # 调用我定义的正方形面积函数
length = float(input("请输入长方形的长度:"))
width = float(input("请输入长方形的宽度:"))
print(f"长方形的面积是:{rectangle_area(length, width)}") # 调用我定义的长方形面积函数
a = float(input("请输入梯形的上底:"))
b = float(input("请输入梯形的下底:"))
height = float(input("请输入梯形的高:"))
print(f"梯形的面积是:{trapezoid_area(a, b, height)}") # 调用我定义的梯形面积函数
7、对一串数字的倒序输出
nums = [] #创建了一个空列表 nums,用于存储后续输入的整数
while True: #进入 while True 循环,程序会一直等待用户输入
str = input()
numbers = str.split() #通过 split() 方法将输入的字符串按照空格进行分割,得到一个包含各个子字符串的列表 numbers
for str in numbers: #遍历 numbers 列表中的每个子字符串 str,将其转换为整数 num 并添加到 nums 列表中
num = int(str)
nums.append(num)
break #完成一次输入的处理后,通过 break 语句跳出 while True 循环
for num in nums[::-1]: #使用切片 nums[::-1] 对 nums 列表进行逆序操作
print(num, end=" ")
8、一个简单的登录判断
count = 3
while (count > 0):
user_name=str(input("请输入用户名:"))
key=int(input("请输入密码: "))
count -= 1
if user_name == 'admin' and key == 1314 :
print("登陆成功!")
break
else:
print("登陆失败,请再次尝试")
if count == 0:
print('登陆失败,您已无尝试次数')
break
print(f'你还剩余{count}次机会')
- 首先设置了变量
count
为3,表示用户最多有3次尝试登录的机会。 - 进入
while
循环,只要count
大于0,循环就会继续执行。 - 在循环内,先通过
input
函数分别获取用户输入的用户名(转换为字符串类型)和密码(转换为整数类型)。 - 然后将
count
的值减1,表示已经进行了一次尝试。 - 接着判断输入的用户名和密码是否与预设的正确值(
admin
和1314
)匹配。如果匹配,则打印“登陆成功!”并通过break
语句跳出while
循环;如果不匹配,则打印“登陆失败,请再次尝试”。 - 如果此时
count
的值已经变为0,即3次尝试都已用完,还会额外打印“登陆失败,您已无尝试次数”并通过break
语句跳出while
循环。 - 最后,在每次循环结束时(除了最后一次尝试且失败的情况),会通过
f
字符串打印出用户还剩余的尝试次数。
暂时就先总结这些吧,希望可以帮到大家,每个程序代码我都已经附上了注释详解,便于阅读,后续还会更新更多的python基础题目还有对python的基础教程,欢迎新手学习,也希望大佬指点,能给个三连支持一下