这是风暴脑洞推送的第n篇文章
文 | 阿秀 · 排版 | 阿秀 · 校阅 | 阿秀
01
if语句练习.py
#从控制台输入一个整数,判断是否是偶数'''num = int(input())if num % 2 == 0: print("是偶数")else: print("是基数")''''''if-else语句格式:if 表达式: 语句1else: 语句2 逻辑:当程序执行到if-else语句时,首先计算“表达式”的值,如果“表达式”的值为真,则执行“语句1”。执行完“语句1”跳出整个if-else语句。如果“表达式”的值为假,则执行“语句2”。执行完“语句2”跳出整个if-else语句。''''''练习题:从控制台输入一个三位数,如果是水仙花数就打印“是水仙花数”,否则打印“不是水仙花数”水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身例如:153 = 1^3 + 5^3 + 3^3'''#练习题1解答:num = int(input("请输入一个三位数:"))a = num % 10b = num // 10 % 10c = num // 100if num == a**3 + b**3 + c**3: print("是水仙花数")else: print("不是水仙花数")'''从控制台输入一个五位数,如果是回文数就打印“是回文数”,否则打印“不是回文数”11111 12321 12221 '''#练习题2解答:'''#我的做法:num = int(input("请输入一个五位数:"))d = num % 10e = num // 10 % 10f = num // 100 % 10g = num // 1000 % 10h = num // 10000if d == h: if e == g: print("是回文数")else: print("不是回文数")'''#老师做法:num = int(input("请输入一个五位数:"))a = num % 10b = num // 10000c = num // 10 % 10d = num // 1000 % 10if a != b: print("不是回文数")else: if c != d: print("不是回文数") else: print("是回文数")'''#不准使用max从控制台输入两个数,输出较大的值从控制台输入三个数,输出较大的值'''#我的做法:'''num1 = int(input("请输入第一个数:"))num2 = int(input("请输入第一个数:"))if num1 > num2: print(num1)else: print(num2)num3 = int(input("请输入第一个数:"))num4 = int(input("请输入第一个数:"))num5 = int(input("请输入第一个数:"))if num3 > num4: if num3 > num5: print(num3) else: print(num5)else: if num4 > num5: print(num4) else: print(num5)'''#教师做法:num1 = int(input("请输入第一个数:"))num2 = int(input("请输入第二个数:"))num3 = int(input("请输入第三个数:"))max = num1if num2 > num1: max = num2if num3 > max: max = num3print("max =",max)
02
while语句练习.py
'''while 语句:格式:while 表达式: 语句逻辑:当程序执行到while语句时,首先计算“表达式”的值,如果“表达式”的值为假,那么结束整个while语句。如果“表达式”的值为真,则执行“语句”,执行完“语句”再去计算表达式的值,如果“表达式”的值依然为真,则执行“语句”,执行完“语句”再去计算“表达式”的值。如此往复循环,直到表达式的值为假才停止。''''''num = 1while num <= 5: print(num) num += 1''''''#计算1+2+3.....+100的值sum = 0num = 1while num <= 100: sum += num num += 1print("sum = %d" % (sum))str = "nikos is a handsome man"index = 0 #下标从0开始while index < len(str): #规定循环次数 print("str[%d] = %s" % (index,str[index])) index += 1''''''打印出所有三位数中的水仙花数告诉我五位数中有多少个回文数从控制台输入一个数,判断是否是质数从控制台输入一个数,分解质因数从控制台输入一个字符串,返回这个字符串中有多少个单词sif jkssf fjdskf fds 4jlkjll jlkjkjl jkk 3从控制台输入一个字符串,打印出这个字符串中所有数字字符的和hfdkshfk25shsjfhks7 14hjdfsk76hjhjh5 18a->数字->二进制97A 650 48''''''#1.打印出所有三位数中的水仙花数#1^3 + 5^3+ 3^3 = 153num = 100while num <= 999: a = num % 10 b = num // 10 % 10 c = num // 100 if num == a**3 + b**3 + c**3: print("num = %d" % (num)) num += 1#2.告诉我五位数中有多少个回文数num1 = 10000while num1 <= 99999: a1 = num1 % 10 b1 = num1 // 10 % 10 d1 = num1 // 1000 % 10 e1 = num1 // 10000 % 10 if (a1 == e1) and (b1 == d1): print("num1 = %d" % (num1)) num1 += 1#3.从控制台输入一个数,判断是否是质数# (质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数)''''''num2 = int(input("请输入一个数:"))if num2 == 2: print("是质数")index = 2while index <= num2 - 1: if num2 % index == 0: print("不是质数") index += 1if index == num2: print("是质数")'''#4.从控制台输入一个字符串,打印出这个字符串中所有数字字符的和'''str = input("请输入一个字符串:")index = 0sum = 0while index < len(str): if str[index] >= "0" and str[index] <= "9": sum += int(str[index]) index += 1print("sum = %d" %(sum))'''#字符串比较大小#从第一个字符开始比较,谁的ASCII码值大谁就大,# 如果相等会比较下一个字符的ASCII码值,谁的值大谁就大#print("nikos" == "ni")#\0#从控制台输入一个数,分解质因数#90=2x3x3x5'''num = int(input())i = 2while num != 1: if num % i == 0: print(i) num //= i else: i += 1 '''#从控制台输入一个字符串,返回这个字符串中有多少个单词#sif jkssf fjdskf fds 4str = input()str1 = str.strip()index = 0count = 0while index < len(str1): while str1[index] != " ": index += 1 if index == len(str1): break #结束这个循环 count += 1 if index == len(str1): breakprint(count)
03
运算与表达式续集.py
'''位运算符:按位运算符是把数字看作二进制数来进行计算'''# & 按位与运算符#相应的位数都为1,则结果为1,否则为0print(5 & 7)'''101111---101'''#| 按位与或运算符#两个二进制位有一个为1时,结果为1print(5 | 7)'''101111---111'''#^ 按位异或运算符#二进制两位相异时,结果为1print(5 ^ 7)'''101111---010'''# ~ 按位取反运算符#每个二进制位取反print(~5)''' 11111111111111111111111111111111 10000000000000000000000000000001'''# << 左移动运算符# 各二进制位全部左移动若干位,由<# 高位丢弃,低位补0print(2 << 2)'''0000001000001000'''#右移动运算符#各二进制位全部右移动若干位,由>>右侧的数字决定print(13 >> 2)'''0000110100000011''''''关系运算符和关系运算符表达式== != > < >= <=关系运算符表达式:1 + 2 > 3 + 4格式:表达式1 关系运算符 表达式2功能:计算“表达式1”和“表达式2”的值值:如果关系成立,整个关系运算表达式的值为真,否则为假''''''逻辑运算符''''''逻辑与 and逻辑与运算表达式:表达式1 and 表达式2值:如果表达式1的值为真,表达式2的值为真,整体逻辑与运算表达式的值为真如果表达式1的值为真,表达式2的值为假,整体逻辑与运算表达式的值为假如果表达式1的值为假,表达式2的值为真,整体逻辑与运算表达式的值为假如果表达式1的值为假,表达式2的值为假,整体逻辑与运算表达式的值为假【有一个为假就为假】'''num1 = 10num2 = 20if num1 and num2: print("***********")#短路原则#表达式1 and 表达式2 and 表达式3 and ... and 表达式n'''逻辑或运算表达式:表达式1 or 表达式2值:表达式1的值为真,表达式2的值为真,整体逻辑或运算表达式为真表达式1的值为真,表达式2的值为假,整体逻辑或运算表达式为真表达式1的值为假,表达式2的值为真,整体逻辑或运算表达式为真表达式1的值为假,表达式2的值为假,整体逻辑或运算表达式为假【有一个为真就为真】'''num3 = 0num4 = 1if num3 or num4: print("&&&&&&&&&&&&&&")#短路原则:表达式1 or 表达式2 or 表达式3...or表达式n#前面为真证明整体为真,后面就不用计算了'''逻辑非:not逻辑非运算表达式: not 表达式值:如果表达式的值为真,整体逻辑非运算表达式的值为假如果表达式的值为假,整体逻辑非运算表达式的值为真【颠倒黑白】'''if not 0: print("~~~~~~~~~~")'''成员运算符:in:如果在制定的序列中找到值,返回True,否则返回Falsenot in:如果在制定的序列中没有找到值,返回True,否则返回False''''''身份运算符is:判断两个标识符是不是引用同一个对象is not 判断两个标识符是不是引用不同的对象''''''运算符优先级**~ + - 正负号(一元加减)* / % //+ ->> <<&^ |<= < > >=== !== %= += //=is is notin not in not or and '''#练习题:从控制台输入一个年份,判断是否是闰年#闰年:能被4整除但是不能被100整除 或 能被400整除year = int(input("请输入年份:"))if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0: print("是闰年")else: print("不是闰年")
04
string字符串.py
'''什么是字符串?字符串:以单引号或双引号括起来的任意文本'abc'"def"字符串不可变'''#创建字符串str1 = "nikos is a good man!"str3 = "nikos is a nice man!"str5 = "nikos is a handsome man!"'''字符串运算'''#字符串连接str6 = "nikos is a "str7 = "good man!"str8 = str6 + str7print("str8 = ",str8)#输出重复字符串str9 = "good"str10 = str9 * 3print("str10 =",str10)#访问字符中的某一个字符串#通过索引下标查找字符,索引从0开始str11 = "nikos is good man"print(str11[9])#str11[9] = "a"#print("str11[9] =",str11[9]) 报错:字符串不可变#截取字符串中的一部分str13 = "nikos is a good man!"#从给定下标开始截取到给定下标之前str15 = str13[6:15]#从头截取到给定下标之前,str16 = str13[:5]#从给定下标处开始截取到结尾str17 = str13[16:]print("str17 =",str17)#判断字符串内是否包含某一部分str18 = "nikos is a good man!"print("good" in str18)print("good1" not in str18)print(~5) #-6'''00000101 (5)11111010 (取反)10000101(正负位不变,其他位取反)00000001(加1)----------10000110(得-6)'''#格式化输出print("nikos is a good man!")num = 10str19 = "nikos is a nice man!"f = 10.1267print("num =",num,"str19 = ",str19)# %d(整数) %s(字符串) %f(小数) :占位符# %.3f 精确到小数点后3位,会四舍五入print("num = %d, str19 = %s,f = %.3f" % (num,str19,f))'''转义字符: \将一些字符转换成有特殊含义的字符'''#\nprint("num = %d\nstr19 = %s\nf = %.3f" % (num,str19,f))'''\\'''print("nikos \\n is a good man")#\'print('tom is a \'good\'man')print("tom is a \"good\" man")#tom is a 'good' man#如果字符串内有很多换行,那么用\n写在一行不好阅读,用注释字符串print("good\nnice\nhandsome")print('''goodnicehandsome''')'''\t 制表符'''print("nikos\tgood")#如果字符串中有好多字符都需要转义,就需要加入好多\,为了简化,# Python 允许用 r 表示内部的字符串默认不转义#\\\t\\print(r"\\\t\\")'''windowsC:\\Users\\Administrator\\Pictures\\Saved Pictureslinux/Users/Administrator/Pictures/Saved Pictures'''print(r"C:\Users\Administrator\Pictures\Saved Pictures")#eval(str)#功能:将字符串str当成有效的表达式来求值并返回计算结果num1 = eval("123")print(num1)print(type(num1))print(eval("+123"))print(eval("-123"))print(eval("12+3"))print(eval("12-3"))#print(eval("a12+3"))#print(eval("12a3"))#len(str)#返回字符串的长度print(len("nikos is a good man"))#lower(str)转换字符串中大写字母为小写字母str20 = "NIKOS is a Good Man"str21 = str20.lower()print(str20.lower())print("str20 = %s" %(str20))#upper()转换字符串中小写字母为大写字母'''str21 = "NIKOS is a good man!"print(str21.upper())'''print("NIKOS is a good man!".upper())#swapcase()大小写相互转换str22 = "NIKOS is a gooD mAn!"print(str22.swapcase())#capitalize()句首字母大写str23 = "NIKOS is a gooD maN!"print(str23.capitalize())#title()每个单词开头大写str24 = "NIKOS is a gooD maN!"print(str24.title())#character char#center(width[,fillchar])返回一个指定宽度的居中字符串#fillchar 为填充的字符,默认为空格str25 = "nikos is a good man"print(str25.center(40,"*"))#ljust(width[,fillchar])返回一个指定宽度的左对齐字符串,#fillchar为填充字符,默认为空格str26 = "niks is a nice man"print(str26.ljust(40,"%"))#rjust(width[,fillchar])返回一个指定宽度的右对齐字符串,#fillchar为填充字符,默认为空格str27 = "nikos is a good man"print(str27.rjust(40,"%"))#zfill(width)返回一个长度为width的字符串,右对齐,前面补0str28 = "nikos is a good man"print(str28.zfill(40))#count(str[,start][,end])#返回字符串中str出现的次数,可以指定一个范围,默认从头到尾str29 = "nikos is a very very good man"print(str29.count("very",15,len(str29)))#find(str[,start][,end])#从左向右检测str字符串是否包含在特定字符串中,可以指定范围,# 默认从头到尾,#得到的是第一次出现的开始下标,若没有,返回-1str30 = "nikos is a very very good man"print(str30.find("very"))print(str30.find("nice"))print(str30.find("very",15,len(str30)))#rfind(str[,start][,end])#从右向左检测str字符串是否包含在特定字符串中,可以指定范围,# 默认从头到尾,#得到的是第一次出现的开始下标,若没有,返回-1str30 = "nikos is a very very good man"print(str30.rfind("very"))print(str30.rfind("nice"))print(str30.rfind("very",0,15))#index(str,start=0,end=len(str))#跟find一样,只不过如果str不存在的时候会报一个异常str31 = "nikos is a very very nice man"#print(str31.index("good"))#rindex(str,start=0,end=len(str))#跟rfind一样,只不过如果str不存在的时候会报一个异常str32 = "nikos is a very very nice man"print("********")print(str31.rindex("very"))#lstrip()截掉字符串左侧指定的字符,默认为空格str33 = " nikos is a nice man"print(str33.lstrip())#rstrip()截掉字符串右侧指定的字符,默认为空格str34 = "nikos is a nice man "print(str34.rstrip(),"*")#strip()截掉两端的指定符号str35 = "********nikos is a good man********"print(str35.strip("*"))#ord()显示字符对应的ASCII码str36 = "a"print(ord(str36))#chr()显示ASCII码对应的字符str37 = chr(65)print(str37)#字符串也可以比较大小print("a" == "a")#split(str="", num)#以str为分隔符截取字符串,指定num,则仅截取num个字符串str38 = "nikos**is******a***good*man"print(str38.split("*"))list39 = str38.split("*")c = 0for s in list39: if len(s) > 0: c += 1print(c)#splitlines([keepends]) 按照('\r','\r\n','\n')分隔#keepends == True 会保留换行符str40 = '''nikos is a good man!nikos is a nice man!nikos is a handsome man!'''print(str40.splitlines(True))#join() 以指定的字符串分隔符,将seq中的所有元素组合成一个字符串list41 = ['nikos','is','a','good','man']str42 = "&&*%*".join(list41)print(str42)#max() min()str43 = "nikos is a good man!z"print(max(str43))print("*"+min(str43)+"*")#replace(oldstr,newstr,count)#用newstr替换oldstr,默认是全部替换,如果指定了count,那么只#替换前count个str44 = "nikos is a good good good man"str45 = str44.replace("good","nice",2)print(str44)print(str45)#创建一个字符串映射表print("*****************")# 要转换字符 目标字符t46 = str.maketrans("ac","65")# a--6 c--5str47 = "nikos is a good good good man"str48 = str47.translate(t46)print(str48)#startswith(str,start=0,end=len(str)) 判断开始#在给定范围内判断是否以给定的字符串开头#若没有给定范围,默认整个字符串str49 = "nikos is a good man"print(str49.startswith("nikos",4,16))#endswith(str,start=0,end=len(str)) 判断开始#在给定范围内判断是否以给定的字符串结束#若没有给定范围,默认整个字符串str50 = "nikos is a good man"print(str50.endswith("man",15,19))#编码#encode(encoding="utf-8",errors="strict"str51 = "nikos is a good man岗"#ignore 忽略错误data52 = str51.encode("utf-8","ignore")print(data52)#解码 注意:要与编码时的格式一致str53 = data52.decode("gbk","ignore")print(str53)#isalpha()#如果字符串中至少有一个字符且所有的字符都是字母,返回True,#否则返回Falsestr54 = "nikosisagoodman"print(str54.isalpha())#isalnum()#如果字符串中至少有一个字符且所有的字符都是字母或数字,返回True,#否则返回Falsestr55 = "a132"print(str55.isalnum())#isupper()#如果字符串中至少有一个英文字符且所有的英文字符都是大写字母,返回True,#否则返回Falseprint("ABC1".isupper())print("ABC#".isupper())#islower()#如果字符串中至少有一个英文字符且所有的英文字符都是小写字母,返回True,#否则返回Falseprint("abc".islower())print("abcS".islower())print("1".islower())print("abc#".islower())#istitle()#如果字符串是标题化的返回True,否则返回Falseprint("Nikos is".istitle())print("Nikos Is".istitle())print("nikos is".istitle())#isdigit()#如果字符串中只包含数字字符返回True,否则返回Falseprint("123".isdigit())print("123a".isdigit())#isnumeric()同上print("1234".isnumeric())print("123a".isnumeric())#字符串中只包含十进制字符print("123".isdecimal())print("123z".isdecimal())#如果字符中只包含空格则返回True,否则返回Falseprint(" ".isspace())print(" ".isspace())print("\t".isspace())print("\n".isspace())print("\r".isspace())
-作者-
*阿秀,用每日PyCharm代码记录Python学习的普通人。