py基础
基本语句和函数等练习,知识点都在代码里。。。

1 """ 2 a = int(input('a = ')) 3 b = int(input('b = ')) 4 print('%d + %d = %d' % (a, b, a + b)) 5 print("%d / %d = %f" % (a, b, a / b)) 6 print('%d // %d = %d' % (a, b, a // b)) 7 print('%d * %d = %d' % (a, b, a * b)) 8 print('%d ** %d = %d' % (a, b, a ** b)) 9 print('%d %% %d = %d' % (a, b, a % b)) 10 """ 11 12 """ 13 a = 100 14 b = 12.345 15 c = 1 + 5j 16 d = 'hello, world' 17 e = True 18 print(type(a)) 19 print(type(b)) 20 print(type(c)) 21 print(type(d)) 22 print(type(e)) 23 """ 24 25 """ 26 f = float(input()) 27 c = (f - 32) / 1.8 28 print('%.1f华氏度 = %.1f摄氏度' % (f, c)) 29 """ 30 31 """ 32 import math 33 34 radius = float(input('请输入圆的半径')) 35 perimeter = 2 * math.pi * radius 36 area = math.pi * radius * radius 37 print('C = %.3f, S = %.3f'% (perimeter, area)) 38 """ 39 40 """ 41 year = int(input('please input year:')) 42 is_leap = (year % 4 == 0 and year % 100 != 0 or year % 400 == 0) 43 print(is_leap) 44 """ 45 46 """ 47 username = input('请输出用户名') 48 password = input('请输出密码') 49 if username == 'admin' and password == '123456': 50 print('身份验证成功') 51 else: 52 print('身份验证失败') 53 """ 54 55 """ 56 x = float(input()) 57 if x > 1: 58 y = 3 * x - 5 59 elif x >= -1: 60 y = x + 2 61 else: 62 y = 5 * x + 3 63 print('f(%.2f) = %.2f' % (x, y)) 64 """ 65 66 """ 67 import math 68 a = float(input('a = ')) 69 b = float(input('b = ')) 70 c = float(input('c = ')) 71 if a + b > c and a + c > b and b + c > a: 72 print('周长:%f' % (a + b + c)) 73 p = (a + b + c) / 2 74 area = math.sqrt(p * (p - a) * (p - b) * (p - c)) 75 print('面积:%f' % (area)) 76 else: 77 print('不能构成三角形') 78 """ 79 80 """ 81 sum = 0 82 for x in range(101):# 产生一个从0~100的整数序列 83 sum += x 84 print(int(sum)) 85 """ 86 """ 87 sum = 0 88 for x in range(1, 101):# 产生一个从1~100的整数序列 89 sum += x 90 print(int(sum)) 91 """ 92 93 """ 94 sum = 0 95 for x in range(1, 100, 2):# 可以产生一个1~99的奇数序列,其中步长为2,即数值序列的增量 96 sum += x 97 print(int(sum)) 98 """ 99 100 """ 101 import random 102 103 answer = random.randint(1, 100) 104 counter = 0 105 while True: 106 counter += 1 107 number = int(input('请输出:')) 108 if number < answer: 109 print('大一点') 110 if number > answer: 111 print('小一点') 112 if number == answer: 113 print('恭喜你猜对了') 114 break 115 print('你总共猜了%d次' % (counter)) 116 if counter > 7: 117 print('你的智商余额明显不足') 118 """ 119 120 """ 121 for i in range(1, 101): 122 for j in range (1, 101): 123 print('%d * %d = %d' % (i, j, i * j), end = '\t')# 在print语句之后使用','加end = '\t'使得输出语句输出tab而非换行 124 print()# 输出换行 125 """ 126 127 """ 128 from math import sqrt 129 130 while(True): 131 try: 132 num = int(input('请输入一个正整数:')) 133 end = int(sqrt(num)) 134 is_prime = True 135 for x in range(2, end + 1): 136 if num % x == 0: 137 is_prime = False 138 break 139 if is_prime and num != 1: 140 print('%d 是素数' % (num)) 141 else: 142 print('%d 不是素数' % (num)) 143 except EOFError: 144 pass 145 """ 146 147 """ 148 x = int(input()) 149 y = int(input()) 150 if(x > y): 151 x, y = y, x # 可以通过这种方式直接交换两个变量的值 152 for factor in range(x, 0, -1): 153 if x % factor == 0 and y % factor == 0: 154 print('%d 和 %d 的最大公约数是 %d' % (x, y, factor)) 155 print('%d 和 %d 的最小公倍数是 %d' % (x, y, x * y // factor)) 156 break 157 """ 158 159 """ 160 row = int(input('请输入行数:')) 161 for i in range(row): 162 for j in range(i + 1): 163 print('*', end = '')# end = ''表示连接输出 164 print() 165 """ 166 167 """ 168 row = int(input('请输入行数:')) 169 for i in range(row): 170 for j in range(row): 171 if j < row - i - 1: 172 print(' ', end = '') 173 else: 174 print('*', end = '') 175 print() 176 """ 177 178 """ 179 row = int(input("请输出行数:")) 180 for i in range(row): 181 for j in range (row - i - 1): 182 print(' ', end = '') 183 for j in range(2 * i + 1): 184 print('*', end = '') 185 print() 186 """

1 """ 2 # 寻找水仙花数 :水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身 3 4 for i in range(100, 1000): 5 x = int(i) 6 sum = 0 7 while(x > 0): 8 sum += (x % 10) ** 3 9 x //= 10 10 if sum == i: 11 print('%d 是水仙花数' % sum) 12 """ 13 14 # 如果一个数恰好等于它的因子之和,则称该数为“完全数”。 15 # 这里我们以1e4以内的完全数为例求解 16 17 """ 18 import math 19 20 for i in range(1, 10001): 21 sum = 0 22 end = int(math.sqrt(i)) 23 for j in range(1, end + 1): 24 if i % j == 0: 25 sum += j 26 if j > 1 and i // j != j: 27 sum += i // j 28 if sum == i: 29 print("%d 是完全数" % i) 30 """ 31 32 """ 33 # 百钱百鸡问题:我国古代数学家张丘建在《算经》一书中提出的数学问题: 34 # 鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? 35 36 for i in range(0, 20): 37 for j in range(0, 33): 38 z = 100 - i - j 39 if 5 * i + 3 * j + z // 3 == 100: 40 print('公鸡: %d只, 母鸡: %d只, 小鸡: %d只' % (i, j, z)) 41 """ 42 43 """ 44 # 生成斐波纳挈数列 45 46 a = 0 47 b = 1 48 for _ in range(20): 49 a, b = b, a + b 50 print(a, end = ' ') 51 """ 52 53 """ 54 # Craps赌博游戏 55 # 玩家掷两个骰子,每个骰子点数为1-6,如果第一次点数和为7或11,则玩家胜; 56 # 如果点数和为2、3或12,则玩家输庄家胜。 57 # 若和为其他点数,则记录第一次的点数和,玩家继续掷骰子,直至点数和等于第一次掷出的点数和则玩家胜; 58 # 若掷出的点数和为7则庄家胜。 59 60 import random 61 62 flag = False 63 cnt = 0 64 while not flag : 65 cnt += 1 66 a = random.randint(1, 6) 67 b = random.randint(1, 6) 68 if cnt == 1: 69 if a + b == 7 or a + b == 11: 70 print('a = %d, b = %d, 玩家胜利' % (a, b)) 71 flag = True 72 elif a + b == 2 or a + b == 3 or a + b == 12: 73 flag = True 74 print('a = %d, b = %d, 庄家胜利' % (a, b)) 75 else: 76 sum = a + b 77 else: 78 if a + b == 7: 79 print('sum等于%d, a + b = %d, 庄家胜利' % (sum, a + b)) 80 flag = True 81 elif a + b == sum: 82 print('sum 等于 %d, a + b = %d, 玩家胜利' % (sum, a + b)) 83 flag = True 84 """

1 """ 2 #计算组合数的值 3 4 m = int(input('m = ')) 5 n = int(input('n = ')) 6 fm = 1 7 for num in range (1, m + 1): 8 fm *= num 9 fn = 1 10 for num in range (1, n + 1): 11 fn *= num 12 fmn = 1 13 for num in range (1, m - n + 1): 14 fmn *= num 15 print(fm // fn // fmn) 16 """ 17 18 """ 19 # 函数命名遵循变量命名规则,以def开头 20 def factorial(num) : 21 result = 1 22 for n in range(1, num + 1): 23 result *= n 24 return result 25 26 m = int(input('m = ')) 27 n = int(input('n = ')) 28 print(factorial(m) // factorial(n) // factorial(m - n)) 29 """ 30 31 """ 32 from random import randint 33 34 def roll_dice(n = 2): 35 total = 0 36 for _ in range(n): 37 total += randint(1, 6) 38 return total 39 40 def add(a = 0, b = 0, c = 0): 41 return a + b + c 42 43 # 如果没有指定参数那么使用默认的值摇两颗骰子 44 print(roll_dice()) 45 #摇三颗骰子 46 print(roll_dice(3)) 47 print(add()) 48 print(add(1)) 49 print(add(1, 2)) 50 print(add(1, 2, 3)) 51 #传递参数时可以不按照设定的顺序进行传递 52 print(add(c = 50, a = 100, b = 200)) 53 """ 54 55 """ 56 #在参数名前的*表示args是一个可变的参数 57 #即在调用add函数时可以传入0个或者多个参数 58 59 def add(*args): 60 total = 0 61 for val in args: 62 total += val 63 return total 64 65 print(add()) 66 print(add(1, 2)) 67 print(add(1, 3, 4, 5, 6)) 68 """ 69 70 """ 71 #在python中,如果在同一个文件中定义了两个相同名字的函数,那么后面的函数会覆盖之前的那个函数,也就意味着两个之中其实只有一个是存在的。 72 #但是在不同的模块即不同的py文件中可以存在相同文件名的函数,比如module1.py和module2.py中各有一个foo()函数那么我们可以通过下面这种方式访问里面的具体的函数。 73 74 #module1.py 75 def foo(): 76 print('hello, world!') 77 #module2.py 78 def foo(): 79 print('goodbye, world!') 80 81 #test.py 82 from module1 import foo 83 84 foo() 85 86 from module2 import foo 87 88 foo() 89 90 #也可以按照下面的这种方式区分到底要使用哪一个foo函数。 91 92 #test.py 93 import module1 as m1 94 import module2 as m2 95 m1.foo() 96 m2.foo() 97 98 # 但是实际上,如果我们导入的模块除了定义函数之外还有其他可执行代码,那么python解释器在导入这个模块的时候也会执行这部分代码 99 # 我们可以用如下的if语句编写其它执行代码,这样其它代码只有直接调用的时候才会执行,因为只有直接执行的模块的名字才是“__main__”。 100 101 def foo(): 102 pass 103 def bar(): 104 pass 105 106 #_name_是Python中一个隐含的变量它代表着模块的名字 107 # 只有被Python解释器直接执行的模块的名字才是_main_ 108 if __name__ == '__main__': 109 print('call foo()') 110 foo() 111 print('call bar()') 112 bar() 113 114 test.py 115 116 import module3 117 118 #导入module3时不会执行模块中if条件成立时的代码,因为模块的名字是module3而不是_main_ 119 120 """ 121 122 # Day 6 : Function: Trainning 123 124 # 在下面得gcd函数实现过程中,出现了一个语句如果x > y则执行交换,否则不完成交换 125 """ 126 # 练习1:实现计算求最大公约数和最小公倍数的函数。 127 def gcd(x, y): 128 (x, y) = (y, x) if x > y else (x, y) 129 for factor in range(x, 0, -1): 130 if(x % factor == 0 and y % factor == 0): 131 return factor 132 def lcm(x, y): 133 return x * y // gcd(x, y) 134 135 print(gcd(1, 3)) 136 print(lcm(2, 3)) 137 """ 138 139 """ 140 # 练习2:实现判断一个数是不是回文数的函数。 141 def is_palindrome(num): 142 temp = num 143 total = 0 144 while temp > 0: 145 total = total * 10 + temp % 10 146 temp //= 10 147 return total == num 148 """ 149 150 """ 151 #练习3:实现判断一个数是不是素数的函数。 152 from math import sqrt 153 def is_prime(num): 154 for factor in range(2, int(sqrt(num) + 1)): 155 if num % factor == 0: 156 return False 157 return True if num != 1 else False 158 159 a = int(input('please input a positive number: ')) 160 if is_prime(a): 161 print('%d is prime' % a) 162 else: 163 print('%d is not prime' % a) 164 """ 165 166 """ 167 #练习4:写一个程序判断输入的正整数是不是回文素数。 168 169 if __name__ == '__main__': 170 num = int(input('请输入正整数:')) 171 if is_palindrome(num) and is_prime(num): 172 print('%d 是回文素数' % num) 173 """ 174 175 # 有关python变量作用域的问题 176 """ 177 Python中一般有 178 局部作用域:某个函数内部申请的变量只能在这个函数内或者函数内嵌套的函数内使用 179 嵌套作用域:如果A函数属于B函数的内部函数,那么在函数A中命名的变量在函数A之外都不能使用,而在函数B中命名的变量可以在函数A中使用 180 全局作用域:不包含在任何一个函数内,默认包含在main函数之内的全局变量,在任何地方都可以使用或者更改(更改时需要使用global关键字引入) 181 内置作用域:一般指的是Python内置的那些隐含的标识符min,len等等都属于内置作用域。 182 """ 183 184 """ 185 #在下面的代码中,函数内不可以修改a的值 186 187 def foo(): 188 a = 200 189 print(a)# 200 190 191 if __name__ == '__main__': 192 a = 100 193 foo() 194 print(a) # 100 195 """ 196 197 """ 198 #我们可以通过以下的方式修改变量a的值 199 #我们使用global关键字来指示foo函数中的变量a来自于全局作用域,如果全局中没有a变量,那么下面得这个a变量就是一个申请的全局变量,也可以在全局使用 200 201 def foo(): 202 global a 203 a = 200 204 print(a) #200 205 206 if __name__ == '__main__': 207 a = 100 208 foo() 209 print(a) #200 210 """ 211 212 """ 213 #如果我们希望函数内部的函数能够修改嵌套作用域中的变量时可以使用nonlocal关键字来指示变量来自于嵌套作用域 214 215 def foo(): 216 a = 100 217 def bar(): 218 nonlocal a 219 a = 200 220 print(a) 221 bar() 222 print(a) 223 224 foo() 225 """ 226 227 """ 228 #往后的Python代码格式按照如下格式书写 229 230 def main(): 231 # Todo:Add your code hear 232 pass 233 234 if __name__ == '__main__': 235 main() 236 """
一行输入两个整数:

1 def main(): 2 try: 3 while(True): 4 a, b = input().split() 5 print(int(a) * int(b)) 6 except EOFError: 7 pass 8 9 if __name__ == '__main__': 10 main()
每行一个整数:

1 def main(): 2 try: 3 while(True): 4 a = input() 5 b = input() 6 print(int(a) * int(b)) 7 except EOFError: 8 pass 9 10 if __name__ == '__main__': 11 main()
时间并不会因为你的迷茫和迟疑而停留,就在你看这篇文章的同时,不知道有多少人在冥思苦想,在为算法废寝忘食,不知道有多少人在狂热地拍着代码,不知道又有多少提交一遍又一遍地刷新着OJ的status页面……
没有谁生来就是神牛,而千里之行,始于足下!