python练习20200704

    技术2026-04-22  13

    1.转换成二进制 num=1100100 result=0 #存储每一位计算出来的值 num=str(num)[::-1] #把数字转换为字符串 for i in range(len(num)): print(num[i],int(num[i])*(2**i)) result+=int(num[i])*(2**i) #pow(2,i) print(result) 2.求两个正整数m和n的最大公约数 ''' 10 5--->5 公约数是2个数字可以同时被整除 算法: 两个数字比大小,找到的小的数字 从小数字开始,用循环的方式,每次递减1,看看是否可以出现同时 被2个数字整除的情况,如果找到了,就停止循环,这个数字就是 最大公约数 10,5---》10》5 5 for循环 5 4 3 2 1 以倒序的方式来循环 if divmod(10,i)[1]==0 and divmod(5,i)[1]==0: pring(i) break i就是最大公约数 ''' num1 =10 num2 = 8 if num1>num2: div_num =num2 else: div_num = num1 for i in range(div_num,0,-1): print(i) if divmod(num1,i)[1] ==0 and divmod(num2,i)[1] ==0: print("最大公约数是:",i) break 3.求两个正整数m和n的最小公倍数 ''' 最小公倍数 2个数比大小,找到两个数比较大的那一个 开始用大的数除2个数,如果都被整除了,那么这个数字就是最大公倍数 如果没有,则数字+1继续重复相同的操作,知道找到除以2个数都没有余数。 这个数字就是最大公倍数 ''' num1=10 num2=8 if num1>num2: #找到大的数字 num=num1 else: num=num2 while 1: #实现一个死循环,不断实现数字上的累加 if num%num1==0 and num%num2==0: #num除num1和num2都得0 print("最小公倍数:",num) break num+=1 4.输入多个数据,如果是数字就做一个累加, 如果不是,就什么都不操作 最后打印一下累加的和。 #1 result = 0 while 1: #不知道输入几次的都用while来实现 content = input("请输入数据:") if str.isdigit(content): result+=int(content) elif content=="over": break print("累加的结果是:%s" %result) #2 result = 0 while 1: #不知道输入几次的都用while来实现 content = input("请输入数据:") try: float(content) result+=float(content)#如果float 转换出现错误,则此句被短路 except: if content=="over": break #结束所有的循环 continue print("累加的结果是:%s" %result)
    Processed: 0.008, SQL: 9