Python练习题(二)

1.猜数字游戏

代码中生成一个随机整数. 然后用户输入数字后, 程序提示用户的输入是高了还是低了. 直到用户猜中这个数字, 游戏结束. 提示, random模块的randint函数能够帮助我们生成随机数.

import random
random.seed()
a=random.randint(1,10)
b=eval(input('请输入[1,10]区间你猜想的数字》'))
while True:
    if a==b:
        print('恭喜你,猜对了,奖品是我的吻!')
        break
    else:
        if a<b:
            print('你猜大了,惩罚是我的吻!')
        else:
            print('你猜小了,惩罚是我的吻!')
        b=eval(input('请重新猜测[1,10]区间的数》'))
print('谢谢!')

在这里插入图片描述

2.数9

编写程序数一下 1到 100 的所有整数中出现多少次数字9。

ret=0
for x in range(1,100):
    if x%10==9:
        ret+=1
    if x//10==9:
        ret+=1
print(ret)     

20

3. 在屏幕上输出以下图案

	  *
	 ***
	*****
   *******
  *********
 ***********
*************
 ***********
  *********
   *******
    *****
     ***
      *
for x in range(1,8):
    print(' '*(7-x),'*'*(2*x-1),sep='')
for x in range(1,7):
    print(' '*x,'*'*(13-2*x),sep='')

在这里插入图片描述

4.水仙花数

求出0~999之间的所有“水仙花数”并输出。“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。

/在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数,其各个数之N次方和等于该数。
例如153、370、371及407就是三位数的水仙花数,其各个数之立方和等于该数:
153 = 1^3 + 5^3 + 3^3。
370 = 3^3 + 7^3 + 0^3。
371 = 3^3 + 7^3 + 1^3。
407 = 4^3 + 0^3 + 7^3。
/

ret=0
for x in range(1,1000):
    y=x
    val=0
    while y!=0:
        val+=(y%10)**3
        y=y//10
    if val==x:
        print(x,end='\t')
        ret+=1
print('0~999之间一共有%d个水仙花数' %ret)

1 153 370 371 407 0~999之间一共有5个水仙花数

5. 2+22+222+2222+22222

求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222

#Sn=a+aa+aaa+aaaa+aaaaa
a=eval(input('给定a》'))
b=eval(input('求前多少项的和》'))
cur=a
ret=cur
for x in range(2,b+1):
    cur=cur*10+a
    ret+=cur
print(ret)

给定a》2
求前多少项的和》5
24690

6. 生成二维吗

需要依赖第三至少两个第三方库,依次安装即可:

pip install Image
pip install qrcode

代码很简单

import qrcode
qrcode.make("张威真帅").save("./test.png")

在这里插入图片描述

7. 打印FUN

print('FFFFFFF    ','U     ','U   ','NN    ','NN',sep='')
print('FF         ','U     ','U   ','NNN   ','NN',sep='')
print('FFFFFFF    ','U     ','U   ','NN N  ','NN',sep='')
print('FF         ',' U   ','U    ','NN  N ','NN',sep='')
print('FF         ','  UUU     ','NN   NNN',sep='')

在这里插入图片描述

8.二分查找

写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)

def _find(_list,x):
    for i in range(0,len(_list)):
        if x==_list[i]:
            return i
    else:
        return None
a=[10,32,45,65,92,102,200]
print(_find(a,65))

或者写成这样

def _find(_list,x):
    for i,val in enumerate(_list):
        if x==val:
            return i
    else:
        return None
a=[10,32,45,65,92,102,200]
print(_find(a,65))

3

9. 写一个函数返回参数二进制中 1 的个数

比如: 15的二进制形式为0000 1111一共有4 个 1

def find_bin_one(x):
    val = x
    ret=0
    while val!=0:
        if val & 1==1:
            ret+=1
        val=val>>1
    return ret
print(find_bin_one(15))

4

10.

发布了139 篇原创文章 · 获赞 55 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/Vickers_xiaowei/article/details/104238664