题目来源:《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))
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐