目录
一、查看地址
在Python中可以用id()函数查看地址,Python中一个数据占据一片内存空间,不同的变量引用该数据时,都是指向这一片空间。
s1='hello'
s2=s1
s3='hello'
print(s1,s2,s3) #hello hello hello
print('s1地址:',id(s1)) #2351863828336
print('s2地址:',id(s2)) #2351863828336
print('s3地址:',id(s3)) #2351863828336
二、字符串与列表的索引
Python中的字符串,有点类似于用一个字符型列表存放字符,即C语言中的字符型数组。
s = 'hello'
print(s[0]) #h
所以字符串可以像列表一样进行索引。索引分为两种,一种从左往右,下标从0开始;一种从右往左,下标从-1开始。
字符串与列表索引机制是一样的。
三、字符串切片操作
格式:字符串变量[start;end:step] #step默认为1,step为负数则表示从右往左切片,此时start是从右边开始
和rang()一样,end不被包括在内,如不指定start则默认为0,如不指定end则默认为最后一个元素的索引值+1(即把后面所有的元素都切进来)。如下:
number = 'abcdefg'
print(number[0:3]) #abc
print(number[:3]) #abc
print(number[3:]) #defg
切片时,start和end的值,两套索引规则都可以使用,也可以交叉混合使用。
number = 'abcdefg'
print(number[-3:7]) #efg
注意,切片操作如果将原字符串全部切下,则新产生的字符串与原字符串地址相同,否则地址不相同。
number = 'abcdefg'
x=number[:]
y=number[:3]
print(id(number)) #2019101971952
print(id(x)) #2019101971952
print(id(y)) #2019101974448
注意:将字符串a完整切片产生的字符串b,虽然地址与a一致,但实际b和a不再是同一个字符串。对b进行修改,a的值不会发生改变。而要是简单的将a赋值给b,则修改b之后,a的值也会改变。所以b=a[:]也被称为字符串的复制。
四、代码练习
1、编写代码实现在超市购买商品。
print('-' * 10, '欢迎光临@@超市', '-' * 10)
count = 0 # 存放商品总金额
while True:
price = float(input('请输入商品价格:'))
number = int(input('请输入商品数量:'))
count += price * number
get = input('当前商品总额为%.2f,继续购物请按任意键,退出请按“q”' % count)
if get == 'q':
break
print('请付款%.2f元' % count)
2、猜数字游戏。
import random
number = random.randint(1, 10)
print('-' * 10, '欢迎来到猜数字游戏', '-' * 10)
choice = input(' 按“s”开始游戏,按“q"退出游戏') # 利用选择结构进入游戏或退出
if choice == 's':
while True: # 利用循环结构可以多次猜测
get_number = int(input('请输入你猜的数字(范围1-10):'))
if get_number == number:
print('恭喜你猜对啦!')
break
elif get_number > number:
print('你猜大啦!')
else:
print('你猜小啦!')
else:
exit()
3、如图
import random
print('-' * 10, '欢迎来到掷色子游戏', '-' * 10)
count = 0
while True:
choice_start = input(' 开始游戏请输入“s”,结束游戏请输入“q”\n')
if choice_start == 'q': # 玩家选择退出游戏
print('游戏已结束')
break
elif choice_start == 's': # 玩家选择开始游戏
#count += 1
if count < 5: # 判断玩家金币是否足以开始游戏
choice_count = input('您的金币为%d,不足以开始游戏(5金币一次),是否充值?是/y 否/n\n' % count)
if choice_count == 'y': # 玩家选择充值
money = int(input('请输入充值金额:\n'))
count += money
print('当前金币余额:%d' % count)
else: # 玩家没有充值
print('金币不足,将退出游戏')
print('游戏已结束')
break
else: # 玩家的金币足以开始游戏
count -= 5
saizi1 = random.randint(1, 6)
saizi2 = random.randint(1, 6)
guss = input('猜大小:小(1) 大(2)\n')
if saizi1 + saizi2 < 7: # 生成色子的结果
result = '1'
else:
result = '2'
if guss == result: # 判断是否猜对
print('恭喜你,猜对了,奖励两个金币!')
count += 2
print('当前金币余额:%d' % count)
else:
print('猜错了,请再接再厉!')
print('当前金币余额:%d' % count)
else: # 玩家既没选择y也没选择n
print('输入有误,请重新输入')
因为Python自定义函数的编写还不会,所以直接写的。后续学习函数之后对此处代码进行重新修改。