每个题目均为自己设计的代码,优化与重构方面与标准答案可能有所不同。
参考教材:Python程序设计基础与应用(机械工业出版社/董付国)
3-13编写程序,让用户在键盘上输入一个自然数n,然后在区间【1,5n】上随机生成n个不重复的自然数,输出这些自然数,然后继续编写代码对这些自然数进行处理,只保留所有偶数,并输出这些偶数。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import random
# 让用户输入自然数n
n = input("Please enter a nature number 'n':")
n = int(n)
# 生成n个不重复的随机数
date = random.sample(range(1, 5*n+1), n)
print(date)
# 创建列表并储存偶数
dates = []
for d in date:
if d % 2 == 0:
dates.append(d)
print(dates)
3-14编写程序,生成包含20个随机数的列表,然后将前10个元素升序排列,后10个元素降序排列,并输出结果。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import random
# 生成两个空列表用于储存前10个数与后10个数
list_1 = []
list_2 = []
# 将前10个数升序排列并贮存在列表1中
for i in range(10):
date = random.randint(0, 50)
list_1.append(date)
list_1.sort()
print(list_1)
# 将后10个数降序排列并贮存在列表2中
for i in range(10):
date = random.randint(0, 50)
list_2.append(date)
list_2.sort()
list_2.reverse()
print(list_2)
# 将列表1与列表2合并并打印出来
print(list_1 + list_2)
3-15编写程序,让用户在键盘上输入一个包含若干整数的列表,输出翻转后的列表。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
print("You can enter 'q' to end!")
numbers = []
# 将用户输入的数生成列表
while True:
number = input("Please enter a number:")
if number == 'q':
break
else:
numbers.append(number)
# 将列表元素顺序颠倒
numbers.reverse()
print(numbers)
3-16阿凡提与国王比赛下棋,国王说要是自己输了的话阿凡提想要什么他都可以拿得出来。阿凡提说那就要点米吧,棋盘一共64个小格子,在第一个格子里放1粒米,第二个格子里放2粒米,第三个格子里放4粒米,第四个格子里放8粒米,以此类推,后面每个格子里的米都是前一个格子里的2倍,一直把64个格子都放满。需要多少粒米呢?要求使用列表推导式和内置函数进行计算。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
number = sum(2**n for n in range(64))
print(number)
4-1编写程序,使用筛选法求解小于n的所有素数。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 这个题不是很懂,参考了答案
maxNumber = int(input('请输入一个自然数:'))
lst = list(range(2, maxNumber))
# 显示出最大整数的平方根
m = int(maxNumber**0.5)
for index, value in enumerate(lst):
if value > m:
break
# 对此位置之后的元素进行过滤
lst[index + 1:] = filter(lambda x: x % value != 0, lst[index+1:])
print(lst)
4-2编写程序,计算小于1000的所有整数中能够同时被5和7整除的最大整数。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 将符合条件的数贮存在列表中
number = []
for i in range(1001):
if i % 5 == 0 and i % 7 == 0:
number.append(i)
print(number)
4-3编写程序,要求用户输入一些数字,输出这些数字中只出现过依次的那些数字。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 将用户输入的所有数写入列表
print("你随时可以按‘q’取消循环。")
numbers = []
while True:
number = input("请输入一个数字:")
if number == 'q':
break
else:
numbers.append(number)
# 将只出现依次的数打印出来
for number in numbers:
if numbers.count(number) == 1:
print(number)
4-4编写程序,要求用户输入一些数字,输出这些数字中只出现过一次的那些数字。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
print("你随时可以按‘q’取消循环。")
# 将用户输入的所有数写入列表
numbers = []
while True:
number = input("请输入一个数字:")
if number == 'q':
break
else:
numbers.append(number)
# 将列表改造为集合
numbers_1 = set(numbers)
print(numbers_1)
未完待续……