知识介绍
字符串
概念:字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的,如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形式,也就是我们所要达到的目的,将坐标字符串的前一半数字和后一半数字表示出来。
今天的讲解就到这里吧,由于本篇是在数据课上偷偷写的,有些地方可能讲的比较肤浅或是过于口语化(俺已经很久没有正经写代码和看代码书了~~~)哪里看不懂的地方可以回复在评论区哦~,我会及时跟正的。