Python学习笔记:基础+进阶10道练习题

习题01.

编写一个程序,查找在2000到3200之间(包含这两个数)中能被7整除,但不是5的倍数的所有数。获得的数字需以逗号分隔,按顺序打印在同一行上。

老师参考:

1st = [] 
for i in range(2000, 3201):
	if (i%7==0) and (i%5!==0) 
	lst.append(str(i)) 
print(','.join(lst))

小编参考:

# 方法一:
for i in range(2000, 3201):
  if i % 7 == 0 and i % 5 != 0:
     print(i, end=',')
print()
  
# 方法二:
print(','.join(str(i) for i in range(2000, 3201) if i % 7 == 0 and i % 5 != 0))
  
# 方法三:
print(','.join(list(map(str, filter(lambda x: x % 7 == 0 and x % 5 !=0,  range(2000,3201))))))
习题02.

编写一个程序,可以计算给定数字的阶乘。所获得的结果需以逗号分隔,按顺序打印在一行上。
假设在程序中输入以下数字:
8
则输出应为:
40320

老师参考:

def fact(x)
 if x == 0: 
 	return 1: 
 return x * fact(x-1) 

x = int(input())
print fact(x)

小编参考:

n = int(input())
# 方法一:
s = 1
for i in range(1, n+1):
  s *= i
print(s)

# 方法二:
import math
s2 = math.factorial(n)
print(s2)

# 方法三:
from functools import reduce
s3 = reduce(lambda x, y: x*y, range(1, n+1))
print(s3)

# 方法四
def loop(n):
  if n <= 0:
    return 1
  else:
    return n * loop(n-1)  
s4 = loop(n)
print(s4)
习题03.

使用给定的整数n,编写一个程序,要求生成包含键值对“i: i*i”的字典,该字典为1到n之间的整数(包含这两个数)。运行程序输出字典。
假设在程序中输入以下数字:
8
则输出应为:
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64}

老师参考:

n = int(input()) 
d = dict() 
for i in range(1, n+1):
	d[i] = i*i 
print(d)

小编参考:

n = int(input())
# 方法一:
d = {}
for i in range(1, n+1):
  d[i] = i * i
print(d)

# 方法二:
print({i:i*i for i in range(1, n+1)})

# 方法三: 
d2 = dict(zip([i for i in range(1, n+1)], [i*i for i in range(1, n+1)]))
print(d2)
习题04.

编写一个程序,要求该程序从控制台接收一个以逗号(英文逗号)分隔的数字序列,并生成一个列表和一个包含每个数字的元组。
假设在程序中输入以下数字:
34,67,55,33,12,98
则输出应为:
[‘34’, ‘67’, ‘55’, ‘33’, ‘12’, ‘98’]
(‘34’, ‘67’, ‘55’, ‘33’, ‘12’, ‘98’)

老师参考:

values = input() 
1st = values.split(",") 
t = tuple(1) 
print(lst) 
print(t)
习题05.

定义一个至少有两种方法的类:
getString:从控制台输入获取字符串
printString:以大写形式输出字符串
也要包括简单的测试功能,以测试类方法。

老师参考:

class InputOutString: 
	def __init__(self): 
		self.s = "" 
		
	def getString(self): 
		self.s = input() 
	def printString(self): 
		print self.s.upper() 
		
strObj = inputOutString() 
strObj.getString() 
strObj.pringString()
习题06.

编写一个程序,根据给定的公式进行计算并输出值:Q = [(2 * C * D)/ H]的平方根
以下是C和H的固定值:C为50,H为30。
D为变量,其值应以逗号分隔,按顺序输入到程序中。
例:
假定以逗号(英文逗号)分隔的输入序列已赋予程序:
100,150,180
则程序应输出:
18,22,24

老师参考:

 import math 
 c = 50 
 h = 30 
 value = [] 
 items = [x for x in input().split(',')] 
 for d in items: 
 	value.append(str(int(round(math.sqrt(2*c*float(d)/h))))) 
 print(','.join (value)) 
习题07.

编写一个程序,该程序将X,Y两位数字作为输入并生成一个二维数组。 数组的第i行和第j列中的元素值应为i * j。
注意:i = 0,1, …,X-1; j = 0,1, …, Y-1。

假设将以下数字赋予程序:
3,5
则程序应输出:
[[0,0,0,0,0],[0,1,2,3,4],[0,2,4,6,8]]

老师参考:

input_str = input() 
dimensions = [int(x) for x in input_str.split(',')] 
rowNum = dimensions[0] 
colNum = dimensions[1] 
multilist = [[0 for col in range(colNum)] for row in range(rowNum)] 
for row in range(rowNum): 
	for col in range(colNum): 
		multilist[row][col] = row*col 
print(multilist)

小编参考:

def lianxi_07(x, y):   
  # 方法一:
  new_lst = []
  for i in range(x): 
    lst = []
    for j in range(y):
      lst.append(i * j)
    new_lst.append(lst) 
  print(new_lst)

  # 方法二:
  print([[i * j for j in range(y)] for i in range(x)])

lianxi_07(3, 5)
习题08.

编写一个程序,该程序接受以逗号分隔的单词作为输入,并在按字母顺序排序后,将这些单词以逗号分隔的形式输出。
假设在程序中输入以下单词:
without,hello,bag,world
则程序应输出:
bag,hello,without,world

老师参考:

items = [x for x in input().split(',')] 
items.sort() 
print(','.join(items))
习题09.

**编写一个程序,改程序接受序列作为输入,并能将输入句中的字母全部改为大写后输出。
假设在程序中输入以下:
Hello world
Practice makes perfect
则程序应输出:
HELLO WORLD
PRACTICE MAKES PERFECT
**

老师参考:

lines = [] 
while True: 
	s = input() 
	if s: 
		lines.append(s.uppper()) 
	else: 
		break
for sentence in lines: 
	print(sentence)
习题10.

编写一个程序,该程序接受一系列以空白格分隔的单词作为输入,并在删除所有重复单词且按照字母顺序排序后,输出这些单词。
假设在程序中输入以下:
hello world and practice makes perfect and hello world again
则程序应输出:
again and hello makes perfect practice world

老师参考:

s = input()
words = [word for word in s.split(" ")]
print(" ".join(sorted(list(set(words)))))

你可能感兴趣的:(Python全栈工程师学习笔记)