入门级练习题(1-15)

注:练习题均来自网络视频素材

Q1:请输出name变量中的e的索引

name='streing e endse'
count=0
while count < len(name):
if name[count] == 'e':
print(count)
count += 1

Q2:判断输入的数是几位数
答案1:
while True:
num=int(input("请输入一个数字:"))
count = 1
while True:
if num // (10**count):
count+=1
continue
else:
print("%s是%s位数" % (num, count))
break

答案2:
重点:用死循环去让这个数一直除10,能够除几次,就是几位数.如果是负数,那么是得不到0的,所以要加一个绝对值转换
num=int(input("请输入一个整数:")
num=abs(num)
count=0
while 1:
  num = num // 10
  count += 1
  if num == 0:
    break
print(count)

Q3:判断标语是否合法
重点:if...in...的用法,注意不能使用 if ('','',) in ...这种写法
while True:
content=input("请输入广告标语:")
if "最" in content or "第一" in content or "稀缺" in "国家级":
# if ["最","第一","国家级"] in content: 错的
print("不合法")
else:
print("合法")
Q4:判断输入的数是否是质数
答案1:
重点:质数的判断不仅仅这一种写法,作为入门级别的题目,很锻炼思路
num=int(input("请输入一个大于1的自然数:"))
count=2
while count<num:
if num % count:
count+=1
continue
else:
print("%s不是质数" % num)
break
if count==num:
print("%s是质数" % num)

答案2:判断1-1000以内的质数
重点:使用for..else...循环去做除数
for i in range(2,1001):
for j in range(2,i):
if i % j == 0:
# print(f"{i}不是质数")
break
else:
print(f"{i}是质数")
Q5:判断输入的数字是否是小数
重点:判断是否是小数,要尽可能的考虑多种可能性
while 1:
num=input("请输入一个数字:")
num_1=num.replace("-","")
if num.count(".") == 1 and not num_1.startswith(".") and not num_1.endswith("."):
print(f'{num}是小数')
else:
print(f'{num}不是小数')
Q6: 使用for循环对s='123'进行遍历,打印的内容依次是"倒计时3秒""倒计时2秒""倒计时1秒""出发"
重点:for...else...的使用,把else放在for结构中,而不放在主线程中,是常用的写法.for的循环体中,也可以有break和continue
s='123'
for c in s:
print(f'倒计时{c}秒')
else:
print('出发')
Q7: 判断一句话是不是回文,正着念和反着念一样
重点:切片中的[::-1]是常用的回文判断方法
str=input("请输入一句话:")
if str[::-1] == str:
print(f'{str}--是回文')
else:
print(f'{str}--不是回文')

Q8:判断一句话中,大写字母出现的次数,小写字母的次数,数字的次数
重点: 判断大小写,数字的函数
str=input("请输入数字字母组合的一句话:")
daxie=0
xiaoxie=0
shuzi=0
qita=0
for c in str:
if c.isupper():
daxie += 1
elif c.islower():
xiaoxie += 1
elif c.isdigit():
shuzi += 1
else:
qita += 1
print(daxie,xiaoxie,shuzi,qita)

Q9: 把列表中的每一个元素用_下划线拼接
重点:累加的核心思想,在循环中保留上一次的结果
要常用切片[:-1]
lst=['哈','哦','嗯']
s=''
for c in lst:
s += c + "_"
s=s[:-1]
print(s)

Q10: 查找列表中的元素,移除每一个元素的空格,并找出以"A"或"a"开头,并且以"c"结尾的所有元素,并添加到一个新列表中,最后循环打印这个新列表
重点:遍历元素并进行修改的模板,以及(a or b) and c 这种判断方式的写法,记得用括号,因为and优先级比or高
li=["TaiBai","ale xC","Abc","egon","ri Tian","WuSir","aqc"]
lst=[]
for item in li:
item = item.replace(" ","")
# if item.upper().startswith("A") and item.endswith("c"):
if (item.startswith("A") or item.startswith("a")) and item.endswith("c"):
lst.append(item)
for content in lst:
print(content)

Q11: 使用for和range,倒序将100~10中的偶数添加到一个新列表中,然后仅保留列表中能被4整除的数
重点: 在循环体中,进行列表的删除是一个坑,因为索引一直在变化.所以要避开
lst=[]
lst_2=[]
for i in range(100,9,-2):
lst.append(i)
for i in lst:
if i % 4 == 0:
lst_2.append(i)
print(lst_2)

Q12: 如何对列表进行去重?
重点:使用集合,这也是集合用的最多的地方
lst=["大力","小牛","搞笑","大力"]
lst=list(set(lst))
print(lst)

Q13: 写一个彩票开奖的程序,36选7,选满就停止
重点:使用set()的去重,和randint
from random import randint
s=set()
while len(s)<7:
number=randint(1,36)
s.add(number)
print(s)

Q14: 对字符串k:1|k1:2|k3:3|k4:4,处理成字典{"k":1,"k1":2....}
重点:切割,及对列表的解构
str="k:1|k1:2|k3:3|k4:4"
lst=str.split("|")
dic={}
for item in lst:
k,v=item.split(":")
dic[k]=int(v)
print(dic)

Q15:有如下值,li=[11,22,33,44,55,66,77,88,99,90],将所有大于66的保存到字典的第一个key中,把小于66的保存到另一个key中,即:{'k1':大于66的所有值列表,'k2':小于66的所有值列表}
li=[11,22,33,44,55,66,77,88,99,90]
# 方案1:手动定好key的数量
# 重点:最基本的写法,缺点就是当需要很多分类的时候,要手动创建
dic={'k1':[],'k2':[]}
for item in li:
if item > 66:
dic['k1'].append(item)
elif item < 66:
dic['k2'].append(item)
print(dic)

# 方案2:让程序来确定key的数量
# 重点:使用get(key)来确定dic中有没有,没有就新增,有就直接用
dic={}
for item in li:
if item > 66:
if dic.get("k1"):
dic["k1"].append(item)
else:
dic["k1"]=[item]
if item < 66:
if dic.get("k2"):
dic["k2"].append(item)
else:
dic["k2"]=[item]
print(dic)

# 方案3:让程序来确定key的数量
# 重点:利用setdefault(key,value)的特性:
# 1.若key存在,则返回字典中key对应的value
# 2.若key不存在,则新增一个key:value键值对
dic={}
for item in li:
if item > 66:
dic.setdefault("k1",[]).append(item)
if item < 66:
dic.setdefault("k2",[]).append(item)
print(dic)
posted @ 2019-09-08 18:46  渱尘  阅读(238)  评论(0编辑  收藏  举报