当前位置: 首页 > news >正文

【python】基础案例分析

1 输入一个整数,判断是否是奇数

​
​a = int(input(“请输入一个整数:”))
if a%2==1:print("是奇数“)
else:print("是偶数”)​​

2 输入一个整数,判断是正数还是负数

a = int(input())
if a>0:print("正数”)
elif a<0:print("负数“)
else:print("为0")

3 判断年份是否是闰年

year = int(input("请输入年份: "))
if (year % 100 != 0 and year % 4 == 0) or year % 400:print("闰年")
else:print("平年")

注意:

Python 中逻辑与运算符是 and 而不是 &&  或逻辑运算符是or而不是||

4 实现人生重开模拟器

这是一款之前很火的文字类小游戏. 玩家输入角色的初始属性之后, 就可以开启不同的人生经历. 
大家可以在网上搜索 "人生重开模拟器", 就可以玩到这个游戏的各种版本. 
完整的程序代码较多, 此处我们只实现其中的一部分逻辑.

(1)设置初始属性

在游戏中我们设定四个属性.

颜值 (face)    体质 (strong)    智力 (iq)    家境 (home)

我们约定每个属性的范围为 [1, 10], 并且总和不能超过 20. 如果玩家输入的初始属性不合理, 就提示输入有误, 重新输入.

print("+---------------------------------------------------------------------+")
print("|                                                                     |")
print("|                   花有重开日, 人无再少年                               |")
print("|                                                                     |")
print("|                   欢迎来到, 人生重开模拟器                             |")
print("|                                                                     |")
print("+---------------------------------------------------------------------+")#设置初始属性
while True:print("请设定初始属性(可用点数总20)”)face = int(input("设定 颜值(1-10):")strong = int(input("设定 体质(1-10):"))iq = int(input("设定 智力(1-10):"))home = int(input("设定 家境(1-10):"))if face < 1 or face > 10:print("颜值设定有误!")continue
if strong < 1 or strong > 10:print("体质设置有误!")continueif iq < 1 or iq > 10:print("智力设置有误!")continueif home < 1 or home > 10:print("家境设置有误!")continueif face + strong + iq + home > 20:print("总点数超过了 20!")continueprint("初始属性设定完成!")break

在循环中使用 continue 的核心目的是快速跳过无效输入的后续处理,直接重新开始新一轮输入

执行continue,跳过当前循环的剩余代码,回到循环开头重新让用户输入属性

执行break,直接终止整个while True循环,退出属性设置流程

(2)设置性别

通过 random.randint(1, 6) 生成一个 [1, 6] 的随机整数, 类似于掷色子. 
  如果是单数, 则性别设为男孩
  如果是双数, 则性别设为女孩. 
男孩和女孩会遇到不同的事件

point = random.randint(1, 6)#掷色子
if point%2 == 1:gender = 'boy'print("你是个男孩“)
else:gender = 'girl'print("你是个女孩")

(3)设置出生点

首先按照家境(home), 分成四个档位. 
10 是第一档. 加成最高
[7, 9] 是第二档. 也有一些加成
[4, 6] 是第三档. 加成较少
[1, 3] 是第四档. 会扣掉属性. 
再扔一次色子, 生成 [1, 3] 的随机数, 用来表示每一种细分情况. 


这里的代码主要就是各种 if else 构成.

point = random.randint(1, 3) # 掷色子
if home == 10:print('你出生在帝都, 你的父母是高官政要')home += 1iq += 1face += 1
elif 7 <= home <= 9:if point == 1:print('你出生在大城市, 你的父母是公务员')face += 2elif point == 2:print('你出生在大城市, 你的父母是大企业高管')home += 2else:print('你出生在大城市, 你的父母是大学教授')iq += 2
elif 4 <= home <= 6:if point == 1:print('你出生在三线城市, 你的父母是教师')iq += 1elif point == 2:print('你出生在镇上, 你的父母是医生')strong += 1else:print("你出生在镇上, 你的父母是个体户")home += 1
else:if 1 <= point <= 2:print('你出生在村里, 你的父母是辛苦劳作的农民')strong += 1face -= 2elif 3 <= point <= 4:print('你出生在穷乡僻壤, 你的父母是无业游民')home -= 1else:print('你出生在镇上, 你父母感情不和')strong -= 1

(4)针对每一岁 生成人生经历

按照年龄, 把人生经历分成四个阶段:
幼年阶段 [1, 10]
青年阶段 [11, 20]
壮年阶段 [20, 50]
老年阶段 50 岁以上. 
 
每个阶段都会有不同的精力和事件发生. 
幼年阶段可塑性强, 体质, 颜值, 智力都会有较快变化
青年阶段主要是求学, 同时父母一辈会有明显变化, 智力和家境会有明显变化. 
壮年阶段相对平稳, 属性变化不大, 主要是一些随机事件影响到属性. 
老年阶段体质, 颜值, 智力都会显著退化, 并且随着年龄的上升, 疾病/死亡的风险逐渐升高. 
 
此处我们以幼年为例, 简单实现一下这里的处理逻辑. 
使用 for 循环, 按照年龄循环起来. 
针对每一年, 先掷一次 [1, 3] 的色子, 根据不同的随机数值, 来触发不同的事件. 
根据性别, 年龄, 各种属性, 来触发不同的事件. 这里都使用 if - else 的方式来组织. 
不同的事件可能会对属性有正面/负面的影响. 
在每一年的最后, 打印这一年遇到的事情. 
如果夭折, 则直接 sys.exit(0) 退出程序.
使用 time.sleep(1) 使程序暂停执行 1s, 方便观察程序结果.

for age in range(1, 11):info = f'你今年 {age} 岁, 'point = random.randint(1, 3)# 性别触发事件if gender == 'girl' and home <= 3 and point == 1:info += '你家里人重男轻女思想非常严重, 你被遗弃了!'print(info)print("游戏结束!")sys.exit(0)# 体质触发的事件elif strong < 6 and point != 3:info += '你生了一场病, 'if home >= 5:info += '在父母的精心照料下恢复了健康'strong += 1home -= 1else:info += '你的父母没精力管你, 你的身体状况更糟糕了'strong -= 1# 颜值触发的事件elif face < 4 and age >= 7:info += '你因为长的太丑, 别的小朋友不喜欢你, 'if iq > 5:info += '你决定用学习填充自己'iq += 1else:if gender == 'boy':info += '你和别的小朋友经常打架'iq -= 1strong += 1else:info += '你经常被别的小朋友欺负'strong -= 1# 智商触发的事件elif iq < 5:info += '你看起来傻傻的, 'if home >= 8 and age >= 6: info += '你的父母给你送到更好的学校学习'elif 4 <= home <= 7:if gender == 'boy':info += '你的父母鼓励你多运动, 加强身体素质'strong += 1else:info += '你的父母鼓励你多打扮自己'face += 1else:info += '你的父母为此经常吵架'if point == 1:strong -= 1elif point == 2:iq -= 1# 健康成长else:info += '你健康成长, 'if point == 1: info += '看起来更聪明了'iq += 1elif point == 2:info += '看起来更好看了'face += 1else:info += '看起来更结实了'strong += 1print('-------------------------------------------')print(info)print(f'strong={strong}, face={face}, iq={iq}, home={home}')time.sleep(1)

更多的逻辑, 此处就不再实现了. 大家可以按照类似的方式, 设计更多的事件, 完成 青年, 壮年, 老年 的相关 逻辑.



5 统计字符出现的次数

string = input()
char = input().strip()
count = string.count(char)
if count > 0:ptint(count)
else:print("输入的字符不存在!")

其中,input().strip(): strip() 方法去除字符串首尾的空白字符(包括空格、换行符、制表符等)

我们通过这个代码,可以学习到一个语句,用来统计一个字符在字符串中出现的次数

sum = string.count(char)   :其中char是要统计的字符,sum是出现的次数,string是字符串


6 统计大小写字母,数字和空格的个数

string=input()
upper=0
lower=0
digit=0
space=0
for char in string:if char.isupper():upper+=1if char.islower():lower+=1if char.isdigit():digit+=1if char.isspace():space+=1print(upper)
print(lower)
print(digit)
print(space)

其中的isupper()  ,islower(), isdigit() , isspace()分别是判断是否是大写字母,小写字母,数字和空格

注意:使用的是四个独立的if语句,而不是if-else语句,这样可以防止被重复计数

7 最长单词

//读取输入的单词列表,使用eval函数将输入的字符串转换为列表
words = eval(input())
//计算列表中最长单词的长度
max_length = max(len(word) for word in words)
//遍历单词列表,输出长度等于最长长度的单词
for word in words:if len(word) == max_lengthprint(word)

这是一个遍历列表 words 的生成器表达式,作用是依次计算列表中每个单词的长度:

例如,如果 words = ["apple", "banana", "cat"],这个表达式会生成 [5, 6, 3](三个单词的长度)。

http://www.dtcms.com/a/585149.html

相关文章:

  • LeetCode(python)——15.三数之和
  • Java基础——集合进阶用到的数据结构知识点1
  • 无线交换机(AC)核心技术详解:构建集中式Wi-Fi网络的基石
  • DNS的正向、反向解析的服务配置知识点及实验
  • 庖丁解牛:深度剖析 Ascend C 算子开发流程与核心概念
  • 《Learn Python Programming(4th)》读后感
  • 网站开发毕业生报告网页设计与制作项目教程陈义文
  • SSM基于JAVA的物流管理系统ztwfg(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 如何在 Ubuntu 上安装 PostgreSQL
  • openssl-1_0_0-1.0.2p-3.49.1.x86_64.rpm 怎么安装?CentOS/RHEL 手动安装RPM包详细步骤
  • C++ 面试高频题 链表 模拟 力扣 143. 重排链表 题解 每日一题
  • 快速定位bug,编写测试用例
  • 力扣第 474 场周赛
  • Node与Npm国内最新镜像配置(淘宝镜像/清华大学镜像)
  • 超越时空网上书城网站建设方案网站人员队伍建设落后
  • 海外云手机是指什么
  • react native 手搓数字键盘
  • 算法复杂度解析:时间与空间的衡量
  • 开源鸿蒙SIG-Qt技术沙龙成都站成功举办,产品方案展示
  • 2025年渗透测试面试题总结-235(题目+回答)
  • C语言进阶:深入理解函数
  • 计算机图形学·11 变换(Transformations)
  • Rust编程学习 - 如何利用代数类型系统做错误处理的另外一大好处是可组合性(composability)
  • LocalAI:一个免费开源的AI替代方案,让创意更自由!
  • 深入理解Ext2:Linux文件系统的基石与它的设计哲学
  • 泉州网站的建设html网页制作我的家乡
  • PHP 魔术常量
  • 【iOS】音频与视频播放
  • php通过身份证号码计算年龄
  • 基于PHP+Vue+小程序快递比价寄件系统