欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python基础练习题

程序员文章站 2024-03-05 15:31:25
...

Python基础练习题
在人工智能大火的当今,Python 作为人工智能时代的首选语言已经越来越收到追捧;但是许多非科班、零基础的小伙伴常常苦于没有合适的入门 Python 的教程而感到苦恼;本人是一名资深Python开发,参与过一些 Python 项目,想和大家分享一些自学 Python 的经验和心得。学以致用,在学习基础知识的过程中,多去实践,多去找些题目做,和小的项目去练手。可以大大提升你入门Python的效率哦!还有就是要找到一个好的老师,带着你去学习,效果也是显而易见的。

下面是一些常见的Python基础练习题,希望能帮到正在学习Python的你。

温度转换

说明:eval()使用

val = input ()
if val[0] in ['F','f']:
    C = (eval(val[1:])-32)/1.8
    print("C{:.2f}".format(C))
elif val[0] in ['C','c']:
     F = 1.8*eval(val[1:])+32
     print("F{:.2f}".format(F))

货币转换

说明:字符串基操

如图:

Python基础练习题

#Ratio = 6.78
Currency = input()
if Currency[-1] in 'D':
    R = 6.78*(eval(Currency[:-3]))
    print("{:.2f}RMB".format(R))
elif Currency[-1] in '$':
    R = 6.78*(eval(Currency[:-1]))
    print("{:.2f}¥".format(R))
elif Currency[-1] in 'B':
    U = (eval(Currency[:-3]))/6.78
    print("{:.2f}USD".format(U))
elif Currency[-1] in '¥':
    U = (eval(Currency[:-1]))/6.78
    print("{:.2f}$".format(U))

(我的文章底部有更全的练习题,资料,源码,视频来辅助你学习Python。想学就去看看,别错过咯。)

输入一个正整数n,对其进行因式分解并输出。

例如:输入18,输出18=233

解题思路:

最小的质数为2,每次从2开始遍历,只要 n % i == 0 , i 为当前n的最小质数,n = n / i 作为新的正整数,跳出当前循环,再次从2开始遍历

遍历至 n = i 时表示因式分解过程已结束

方法一:

a = int(raw_input("请输入一个整数:"))
b = ""
d = a
q = 1
print "n = %d" % a
while q:
    if a == 1:
        break
    for i in xrange(2, a+1):
        if a == i:
            q = 0
            break
 
        if a % i == 0 :
            b += '%s * ' % i
            a = a / i
            break
 
print "%s = %s%s" % (d, b, a)

方法二:

from sys import stdout
n = int(raw_input("请输入一个正整数:"))
b = n
print "n = %s" % n
stdout.write(str(n)+ " = ")
for i in range(2, n+1):
    while n != 1:
        if n % i == 0:
            n = n/i
            if n == 1:
                n = n * i
                break
            stdout.write(str(i))
            stdout.write("*")
        else:
            break
 
print "%d" % n

PS. print 和 sys.stdout的区别

实际上我们在调用 print (对象) 时,实际上是调用了sys.stdout(对象+’\n’),print 比sys.stdout多了一个换行符,所以在不需要换行的情况下追加字符串可以使用sys.stdout

一球从100米高度*落下,每次落地后反跳回原高度的一半,再落下,求他在第10次落地时,共经过多少米?第10次反弹多高?

h = 100
hsum = 100
for i in xrange(1, 11):
    h = 0.5 * h
    hsum += h * 2
 
print hsum, h

凯撒密码

凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

对于原文字符P,其密文字符C满足如下条件:C=(P+3) mod 26‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

上述是凯撒密码的加密方法,解密方法反之,即:P=(C-3) mod 26‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

假设用户可能使用的输入仅包含小写字母a~z和空格,请编写一个程序,对输入字符串进行凯撒密码加密,直接输出结果,其中空格不用进行加密处理。使用input()获得输入。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

说明:字符串基操还不如用C/C++做……

letter = "abcdefghijklmnopqrstuvwxyz"
LETTER = letter.upper()
S = letter + letter + LETTER + LETTER
P = input("")
C = ""
for i in P:
    if i.isalpha():
        j = S.find(i)
        if(j>-1):
            C = C+S[j+3]
    else:
        C = C+i
print(C)

进制转换

说明:辗转相除,反向取余

def getSign(a):
    return('' if(a>=0) else '-')

def getString(num,radix):
    ans = []
    digit = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']
    idx = []
    while True:
        quotien = num//radix
        residue = num%radix
        idx = idx+[residue]
        if quotien == 0:
            break
        num = quotien
    idx.reverse()
    for i in idx:
        ans.append(digit[i])
    str_convert = ''.join(ans)
    return str_convert

a = int(input())
b = int(input())
mark = getSign(a)
bitString = getString(abs(a),b)
print(mark + bitString)

质数判断

说明:直接暴力枚举吧……

def isPrime(n):
    if n==2:
        return True
    else:
        for i in range(2,n):
            if n%i == 0:
                return False
            elif i == n-1:
                return True
        
num=int(input())
if isPrime(num):
    print('yes')
else:
    print('no')

二分法查找

二分法查找就是通过不断对半的方法查找区间[a,b]内的数值位置

def binarySearch(L, t):
    x=0
    low, high = 0, len(L) - 1
    while low < high:
        mid = (low + high)/2
        if L[mid] > t:
            high = mid
        elif L[mid] < t:
            low = mid +1
        else:
            return mid
 
    return mid if L[mid-1] == t else False
 
print binarySearch([1,2,3,4,5,6,7,8,9,10], 4)

在上面给大家介绍了一下常见的Python基础练习题。在这里小编整理了全套的Python零基础学习资料,一些Python常用工具的安装包,学习路线图。帮助你们快速的入门Python。资料路线图都可以找我拿,什么都不要,拿的方式是:看我的网名,也就是Python芸芸的全拼音,然后用这个名字,在(魏X)上找我就行,我还可以给大家一些比较基础的python项目视频!