学习python第八天
课后作业
-
一个列表中有很多重复元素,写一段代码去掉列表中的重复元素。
-
有一个放整数的列表,找出列表中出现次数最多的元素。
nums = [2, 3, 4, 5, 6, 7, 8, 9, 4, 5, 5, 3, 3, 8, 6, 9]
counts = []
for num in nums:
if num not in counts:# 如果原列表中的元素,空列表里面没有,就往空列表里添加这元素,
counts.append(num)
print(counts)
注意出现最多次数的元素可能不止一种
nums = [2, 3, 4, 4, 4, 5, 6, 7, 8, 9, 4, 5, 5, 3, 3, 8, 6, 3, 3, 4]
sum = []#定义空列表装出现最多的元素
max_apper = nums.count(nums[1])#首先假定第一个元素出现次数最多
for num in nums:#循环列表一次比较各个元素出现的次数
if max_apper < nums.count(num):#将出现次数多的次数赋值给初始值
sum.clear()#找到新的出现最多的元素就要把以前存起来的元素清理掉
max_apper = nums.count(num)#将新元素装进列表
sum.append(num)
elif max_apper == nums.count(num):
if num not in sum:#如果找到与目前最多出现次数相同的,且不是同一个元素,就一同放进列表,
sum.append(num)
print(f',出现最多的元素是{sum}输出了{max_apper}次')
了解字符串
字符串是 Python 中最常用的数据类型。我们可以使用引号( ’ 或 " )来创建字符串
还有一些特殊的字符串创建方法
a = '"hello, \tword"'#输出携带双引号, \t表示空格
b = "'hello, \nword'"# 携带单引号, \n表示转行
e = 'hello, \aword' #\a表示白板
g = 'hello, word\b\b '# \b表示删除一个字符
h = '\\hello, word\\'# 输出单斜杠
i = r'C:\Users\86187\.jupyter'
j = f'文件路径{i}'
k = '\141\142\143\x61\x62\x63'
f = '\'hello, word\''# 也是输出单引号
# 双引号一样的办法
c = '''
hello,
word!
googbye,
word
'''
d = '''
君不见,黄河之水天上来,奔流到海不复回。
君不见,高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。
与君歌一曲,请君为我倾耳听。
钟鼓馔玉不足贵,但愿长醉不复醒。
古来圣贤皆寂寞,惟有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑。
主人何为言少钱,径须沽取对君酌。
五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。
'''
# 多行输出
print(a)
print(b)
print(c)
print(d)
print(h)
print(i)
l = '\u9648\u4ed8'
print(l)
字符串的运算
今天学习字符串的运算字符串也是不变数据类型,只能进行读操作,不能进行改写操作
下面进行一些简单的功能
一定要在电脑上亲自测试
a = 'hello, word'
# 获取字符串长度
print(len(a))
# 循环遍历字符串每一个字符
for i in range(len(a)):
print(a[i])
# 重复
print(a * 5)
# 成员运算
print('or' in a)
print('or' not in a)
# 比较运算(比较字符串内容)
b = 'hello, Word'
print(a == b)
print(a != b)
c = 'goodbye word'
print(b > c)
d = 'hello, everybody'
print(b >= c)
print(ord('W'), ord('e'))# 查找字母对应的编码
# 字符串比较方法和之前列表比较方法一致
下面是字符串一些简单的操作
一定要在电脑上亲自测试
a = 'to be or not to be'
# 转大写
print(a.upper())
# 转小写
print(a.lower())
# 首字母大写
print(a.capitalize())
# 每个单词首字母大写
print(a.title())
print(a)
b = 'abc123'
# 判断字符串属性
# 判断字符串是不是数字
print(b.isdigit())
# 判断字符串是不是字母
print(b.isalpha())
# 判断字符串是不是字母和数字
print(b.isalnum())
# 判断字符串是不是ASCII码字符
print(b.isascii())
c = '你好呀'
print(c.isascii())
# 判断字符串是否以指定内容开头
print(c.startswith('你'))
# 判断字符串是不是以指定内容结尾
print(c.endswith('啊'))
-
在字符串中查找有没有某个子串的操作
-
a = 'Oh apple, i love apple.' # index ~ 从左往右寻找指定的子串, 可以指定从哪开始找, 默认是0 # 找到了返回子串对应的索引(下标),找不到就直接报错,程序崩溃 print(a.index('apple'))#从左往右查找 print(a.index('apple', 10))#指定从10开始查找 print(a.rindex('apple'))#从右往左查找,但是索引也是从左开始算 #find ~ 和index使用是一样的,唯一不同的是,就算找不到,程序也不会报错 print(a.find('apple')) print(a.find('apple', 10)) print(a.rfind('apple'))
课后作业
选做作业1:有一个已经排好序的放整数的列表(数字从小到大),输入要查找的数据,如果在列表中找到该数据,输出该数据在列表的下标(索引),否则输出“找不到该数据”
选做作业2:有一个放整数的列表,其中有一个整数出现次数超过了半数以上,请找出该元素
import random
nums = []
for i in range(50):
nums.append(random.randrange(1, 100))
print(nums)
find = int(input('请输入要查找的数'))
do = False
for num in nums:
if num == find:
print(nums.index(num))
do = True
break
if not do:
print('找不到该数据')
nums = [2, 3, 4, 5, 3, 3, 3, 3, 3, 4, 6, 6, 3]
for num in nums:
if nums.count(num) >= len(nums) // 2:
print(num)
break
杨辉三角
了解一下即可
nums = [1]
for _ in range(0, 20):
order = []
print(nums)
for j in range(0, len(nums) + 1):
if j == 0:
order.append(nums[j])
elif j == len(nums):
order.append(nums[len(nums) - 1])
else:
order.append(nums[j] + nums[j - 1])
nums = order
让计算机使用折半法猜数字游戏
answer = int(input('请输入一个1到100之间的数'))
count = 0
n = 1
m = 100
while True:
gass = (m - n) // 2 + n
if answer > gass:
print(gass)
print('稍微大一点')
n = gass
count += 1
elif answer < gass:
print(gass)
print('稍微小一点')
m = gass // 2
n, m = m, gass
count += 1
else:
print(gass)
print('猜对了!')
break
if count == 6:
print('故障了?')
count = 0