python 键盘输入一个整数、输出它的千位与百位_Python编程习题

警察局抓了a,b,c,d四名偷窃嫌疑犯,其中只有一人是小偷。审问中

a说:“我不是小偷。”

b说:“c是小偷。”

c说:“小偷肯定是d。”

d说:“c在冤枉人。”

现在已经知道四个人中三人说的是真话,一人说的是假话,问到底谁是小偷?

问题分析:将a, b, c, d将四个人进行编号,号码分别为1,2,3,4。则问题可用枚举尝试法来解决。

算法设计:用变量x存放小偷的编号,则x的取值范围从1取到4,就假设了他们中的某人是小偷的所有情况。四个人所说的话就可以分别写成:

a说的话:x!=1

b说的话:x == 3

c说的话:x==4

d说的话:x != 4或not(x ==4)

注意:在x的枚举过程中,当这四个逻辑式的值相加等于3时,即表示“四个人中三人说的是真话,一人说的是假话”。

算法如下:

x=1

for x in range(2,4):

if((x!=1)+(x==3)+(x==4)+(x!=4)==3):

print(chr(64+x),"is a thief .");、

判断一个4位整数是否为回文数

问题分析:回文数例子,1221是回文数,因为其千位与个位互换,百位和十位互换后,仍是它本身

计算模型:设输入数为n,则有

(1)取出每一位的值

n的千位:a=n//1000

n的百位:b=n//100%10

n的十位:c=n//10%10

n的个位:d=n%10

(2)构成逆序数

m=d1000+b100+c*10+a

(3)n==m?

代码如下:

n=input("请输入一个四位数:")

n=int(n)

a=n//1000

b=n//100%10

c=n//10%10

d=n%10

m=d*1000+c*100+b*10+a

result=(n==m)

print("回文数的判断结果是:", result)

判断是否为闰年

问题分析:

(1)能被4整除不能被100整除

(2)能被400整除

计算模型:设输入数为y,则有

(1)y%4== 0 and y%100!=0

(2)y%400==0

stry=input("请输入年份:")

y=int(stry)

result=(y%4==0 and y%100!=0) or (y%400==0)

print("闰年的判断结果为:",result)

将输入的字符转换为小写,并输出其ASCII值

提示:

条件表达式为 z if x else y

获得字母的ASCII值函数ord()

字符转换函数chr()

大写字母为‘A ’~‘Z’

c=input("请输入一个字符:")

y=(c if(c>='a' and c<='z') else chr(ord(c)+32))

print("字符:",c,",ASCII:",ord(c),",转换为:",

y,",ASCII:",ord(y))

汉诺(Hanoi)塔问题。

def Hanoi(n,ch1,ch2,ch3):

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值