Python3实现个位数字和十位数字对调, 其乘积不变
两位数13和62具有很有趣的性质,把它们个位数字和十位数字对调,其乘积不变,
即
13*62
31*26
编程序求共有多少对这种性质的两位数,个位与十位相同的不在此列
如11、22重复出现的不在此列如1362与6213
count=0 foriinrange(11,100): first_left=i//10 first_right=i%10 iffirst_left==first_right:#减少程序循环次数,因为后面的forjinrange(i+1,100) continue#已经解决了11、22重复出现的不在此列和13*62与62*13不在队列 forjinrange(i+1,100):#遍历出数字并找出个位和十位 second_left=j//10 second_right=j%10 ifsecond_left==second_right:#同理减少循环次数 continue newfirst=first_right*10+first_left newsecond=second_right*10+second_left ifi*j==newfirst*newsecond:#进行if判断 print('{}*{}={}*{}'.format(i,j,newfirst,newsecond)) count+=1 print(count)
补充知识:Python反转三位整数有几种方法?
废话不多说,开始今天的题目:
问:说说Python反转三位整数有几种方法?
答:这是leetcode上的一道编程算法题,感觉还是蛮经典的,今天就拿出来给大家分享一下!给出一个3位的正整数,你需要将这个整数中每位上的数字进行反转。例如:输入:123,输出:321。大家先不看下面答案,看看如果是自己,可以想出几种Python方式来解决!
下面分别来说说几种实现的方式:
1、取余取整方式
classTest: defreverseInteger(self,number): g=number%10#取出个位数 s=(int(number/10))%10#取出十位数 b=int(number/100)#取出百位数 returng*100+s*10+b if__name__=="__main__": ts=Test() print(ts.reverseInteger(123))#输出结果:321
2、使用栈的方式
classTest: defreverseInteger(self,number): number=str(number)#模拟入栈 l=list(number) result="" whilelen(l)>0: result+=l.pop()#模拟出栈 returnint(result) if__name__=="__main__": ts=Test() print(ts.reverseInteger(123))#输出结果:321
3、使用切片的方式
classTest: defreverseInteger(self,number): number=str(number) result=number[::-1]#python中切片的特殊用法 result=(int(result)) returnresult if__name__=="__main__": ts=Test() print(ts.reverseInteger(123))
4、整数转字符串,反转字符串,然后再转整数
classTest: defreverseInteger(self,x): plus_minus="" reverse_x="" ifx<0: plus_minus="-" x=-x foriinstr(x): reverse_x=i+reverse_x reverse_x=plus_minus+reverse_x ifint(reverse_x)>pow(2,31)-1orint(reverse_x)以上是我分享的4种方式,大家还有其它的方式吗?上面代码都已经经过我亲自测试,可以直接使用!希望能给大家一个参考,也希望大家多多支持毛票票!