[新医科辅修Python作业]判断象限问题--字符串的操作和循环的熟练使用

知识介绍

字符串

概念:字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的,如s=“abcdefghij”,则s[1]=“b”,s[9]=“j”,这可以给我们提供很多方便,如高精度运算时每一位都可以转化为数字存入数组。

题目

输入一个坐标,中间用逗号(英文格式的!)作为分隔,输出该坐标位于哪一个象限

代码

# 这是打上注释后的代码
# made by DavidChen 2021.12.4
# 判断象限.py
import sys # 加载一个强制退出的库,在 sys.exit(0)时用的到 目的是强制退出程序
s = input("输入坐标,格式为 x,y:") # 输入的字符串传递给s
xx, yy = 0, 0 # 初始化

# 下方进行的操作是寻找s中的英文逗号所在的位置
for i in range(0, len(s)): # 跑循环
    if s[i] == ',':
        break # 如果找到了就直接break,此时的i对应的即为逗号所在的位置
# 此时已经出了循环        
if i == len(s)-1: # 判断如果输入的字符串没有逗号作出的回复,如果就是交个作业,这个判断也可以不写
    print("输入格式有误,缺少英文逗号")
    sys.exit(0)

# 下面就是利用int()函数将逗号前半部分和后半部分转换为数字类型,便于进一步的判断
x, y = int(s[0:i]), int(s[i+1:])
# 下面是简简单单的判断象限,非常简单
if x == 0 and y != 0:
    print("坐标位于Y轴上")
elif y == 0 and x != 0:
    print("坐标位于X轴上")
elif x*y == 0:
    print("坐标位于原点上")
else:
    if x > 0 and y > 0:
        print("坐标位于第一象限")
    if x > 0 and y < 0:
        print("坐标位于第四象限")
    if x < 0 and y < 0:
        print("坐标位于第三象限")
    if x < 0 and y > 0:
        print("坐标位于第二象限")


代码中涉及到的知识点

循环

Python中的循环主要有While和For循环,它们的格式分别如下

# While循环
while <条件><执行语句>

例如,我想求得1+2+···+100的sum值,该怎么分别用while循环和for循环做到呢?
显然,做个简简单单的累加

sum = 0 # 初始化累加值
i = 1 # 初始化首值
while i<=100:
	sum += i # 累加的过程
	i += 1 # 累加器
print(sum)
# For循环
for i in range(可以填单个数值或起点止点)<执行语句>

Tip:

一些说明,在range中如果单填数字表示循环跑那个数字次,比如说数据为100,那么说明for循环跑了100次,此时i的取值从0一直取到99,也就是[0,99],正好为一百次;

如果填入两个数据,比如说range(2,10),那么此时i实际取到的值为[2,10),即为[2,9],注意到后者实际上在循环中是取不到的。

for循环中,累加器是默认为1的,也就是说执行语句如非必要,不需要增加累加器,因为在for循环中会自动按1进行累加,如果需要修改默认步长,则在起止点后再加一个值即为新步长
for i in range(1,10,2):
	print(i)

结果:

1
3
5
7
9

回到那个累加小问题,这串代码就很简单了

# 1
sum = 0
for i in range(100):
    sum += i+1
print(sum)

# 2
sum = 0
for i in range(1,101):
    sum += i
print(sum)

判断

在这道小问题中,我们要做的判断是

if s[i] == ',':

此时我们是将字符串中的每一位与‘,’进行比对,实际上计算机是将字符串中的每一位字母转化为ASC码与‘,’的ASC码进行比对。

代码中出现的字符串操作

本问题出现的字符串操作主要为

x, y = int(s[0:i]), int(s[i+1:])

这一行康不懂的同学可以把它拆开来康,就是这样:

x = int(s[0:i])
y = int(s[i+1:])

二者表示的意思是一样的
这里的s[a:b]指代的是s字符串的a位到b-1位,也就是[a,b),有没有发现,这是和上文中的循环语句是一样的,这是新手常常需要注意的点~
外边嵌套的int()函数就是将括号内的东东转换为int形式,也就是我们所要达到的目的,将坐标字符串的前一半数字和后一半数字表示出来。

今天的讲解就到这里吧,由于本篇是在数据课上偷偷写的,有些地方可能讲的比较肤浅或是过于口语化(俺已经很久没有正经写代码和看代码书了~~~)哪里看不懂的地方可以回复在评论区哦~,我会及时跟正的。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值