每日一练(1):循环、选择结构练习
题目来源:《Python程序设计基础与应用》(董付国 著)1.编写程序,使用筛选法求解小于n的所有素数n = int(input())a =[]for i in range(2, n+1):for j in range(2, i):if i % j == 0:breakelse:a.append(i)print(a)2.编写程序,计算小于1000的所有整数中能够同时被5和7整除的最大整数a = [
题目来源:《Python程序设计基础与应用》(董付国 著)
1.编写程序,使用筛选法求解小于n的所有素数
n = int(input())
a =[]
for i in range(2, n+1):
for j in range(2, i):
if i % j == 0:
break
else:
a.append(i)
print(a)
2.编写程序,计算小于1000的所有整数中能够同时被5和7整除的最大整数
a = []
for i in range(1, 1001):
if i % 5 == 0 and i %7 == 0:
a.append(i)
b = max(a)
print(b)
3.编写程序,要求用户输入一些数字,输出这些数字中只出现过一次的那些数字
思路:使用Counter计数器
from collections import Counter
n = input()
a = list(n) #先将输入的一串数字转换成对象为字符串的列表
b = [int(x) for x in a] #再将列表中的字符串对象转化为数字
c = dict(Counter(b)) #以字典的形式记录每个数字出现的个数
d = []
for key in c.keys(): #遍历字典的键
if c.get(key) == 1: #如果该键的值为1,则将它放入列表d中
d.append(key)
print(d)
小知识:
Counter()方法:(该方法可以返回一个key为列表的值,value为该值的具体个数的对象。)
简单来说,就是一个计数器,可以返回一个对象出现了多少次。使用时需要导入
>>> from collections import Counter
>#例1
>>> a = [1, 2, 1, 2, 5, 6, 3, 4, 5, 3]
>>> Counter(a)
Counter({1: 2, 2: 2, 5: 2, 3: 2, 6: 1, 4: 1})
#例2
>>> c = ['blue', 'green', 'red', 'blue', 'yellow', 'red']
>>> Counter(c)
Counter({'blue': 2, 'red': 2, 'green': 1, 'yellow': 1})
4:编写程序,要求用户输入一些数字,输出这些数字中的唯一数字。也就是说,如果某个数字出现了多次,只保留一个。
思路:利用集合中元素的不重复性
n = input()
a = list(n)
b = [int(x) for x in a]
c = set(b)
print(c)
5:编写程序,实现抓狐狸游戏。假设墙上有5个洞(编号分别为0、1、2、3、4),其中一个洞里有狐狸,人类玩家输入洞口编号,如果洞里有狐狸就抓到了;如果洞里没有狐狸就第二天再来抓,但在第二天人类玩家来抓之前,狐狸会跳到隔壁的洞里。
想法:
(1)首先要保证输入的数字合理
(2)然后利用random库中的方法randint随机生成一个数字作为狐狸所在的洞。
(3)用户输入洞口编号,用if语句判断输入的洞口编号和狐狸所在的洞口编号是否一致,一致则成功抓到;不一致则让狐狸跳到隔壁的洞里,重复此步骤,直到抓到狐狸为止。
(4)让狐狸跳到隔壁的洞里:用randint函数随机生成0或1来决定狐狸跳到左边还是右边的洞里。
import random
a = [0, 1, 2, 3, 4]
b = random.randint(0, 4)
c = a[b]
while 1:
n = int(input("请输入你选择的洞:"))
if n != c and n <= 4:
print("狐狸不在这个洞里哦!明天再来吧")
d = random.randint(0, 1)
if d == 0:
c = a[b-1]
elif d == 1:
c = a[b+1]
elif n >= 5:
print("请选择0~4内的数字")
elif n == c:
print("狐狸被抓到啦!")
break
题目6:编写程序,生成一个包含20个介于1到50之间随机整数的列表,将其循环左移5个元素。所谓循环左移是指,每次移动时把列表最左侧的元素移出列表然后追加到列表尾部。
import random
i = 0
a = []
while i < 20:
b = random.randint(1, 50)
a.append(b)
i += 1
print(a) #生成列表
for j in range(0, 5):
c = a[0]
a.append(c)
del a[0]
print(a) #循环左移后的列表
题目7:给定一个包含若干数字的列表A,编写程序计算满足0<=a<=b<=n(其中n为序列长度)的A[b]-A[a]的最大值。
import random
i = random.randint(2, 100)
j = 0
A = []
while j < i:
c = random.randint(0, 1000)
A.append(c)
j += 1
alist = []
for a in range(0, len(A)-1):
for b in range(0, len(A)-1):
if a >= 0 and a <= b and b <= len(alist):
result = A[b] - A[a]
alist.append(result)
print(max(alist))
更多推荐
所有评论(0)