这个我学过么?

学习python3的野路子——分支与循环

2019-02-28  本文已影响0人  HerdingCat

本文相关编程题较多。

分支[1]

python3中实现分支的方式是通过ifelifelse三个关键字。

循环[1][2]

通过whilefor可以实现循环功能。

编程题

  1. 7-3的编程题中涉及整数除法[3]
    # PAT中的基础编程题目集函数题7-3
    num = eval(input())
    revnum = 0
    
    while num:
        revnum = revnum * 10
        revnum = revnum + num % 10
        num = num // 10 # python3中的整除运算
    
    print(revnum)
    
  2. 7-4编程题中涉及字符处理[4]以及类型的转换[5]。本题题意是将十进制转化为十六进制;同时,要注意边界情况。
    # PAT中的基础编程题目集函数题7-4
    num = eval(input())
    if num:
        ans = ''
    else :
        ans = '0'
    
    while num:
        tmp = num % 16
        if tmp < 10:
            ans = str(tmp) + ans
        else :
            ans = str(tmp - 10 + ord('A')) + ans #
        num = num  // 16
    
    print(ans)
    
  3. 本题注意12和24小时的转化。
    # PAT中的基础编程题目集函数题7-7
    hour, min = input().split(':')
    hour = int(hour)
    min = int(min)
    if hour < 12:
        print('%d:%d AM' %(hour, min))
    elif hour == 12:
        print('%d:%d PM' %(hour, min))
    elif hour < 24:
        print('%d:%d PM' %(hour % 12, min))
    else :
        print('%d:%d AM' %(hour % 12, min))
    
  4. 简单的判断。
    # PAT中的基础编程题目集函数题7-8
    speed = eval(input())
    if speed > 60:
        print('Speed: %d - Speeding' %(speed))
    else :
        print('Speed: %d - OK' %(speed))
    
  5. 两两比较即可得到结果。
    # PAT中的基础编程题目集函数题7-9
    A, B, C = input().split(' ')
    if A == B:
        print('C')
    else :
        if A == C:
            print('B')
        else :
            print('A')
    
  6. 本题分类讨论即可。
    # PAT中的基础编程题目集函数题7-10
    year, time = input().split(' ')
    if int(year) >= 5:
        if int(time) > 40:
            print('%.2f' %(40 * 50 + (int(time) - 40) * 1.5 * 50))
        else :
            print('%.2f' %(int(time) * 50))
    else :
        if int(time) > 40:
            print('%.2f' %(40 * 30 + (int(time) - 40) * 1.5 * 30))
        else :
            print('%.2f' %(int(time) * 30))
    
  7. 简单的选择判断,注意除法运算的特殊性。
    # PAT中的基础编程题目集函数题7-12
    num1, op, num2 = input().split()
    if op == '+':
        print(int(num1) + int(num2))
    elif op == '-':
        print(int(num1) - int(num2))
    elif op == '*':
        print(int(num1) * int(num2))
    elif op == '/':
        print(int(int(num1) / int(num2)))
        # print(int(num1) // int(num2)) #
    elif op == '%':
        print(int(num1) % int(num2))
    else :
        print('ERROR')
    
  8. 本题需要留意range(s, e)函数生成的区间是[s, e)。此外,python3按指定格式输出比较麻烦。
    # PAT中的基础编程题目集函数题7-14
    s, e = input().split(' ')
    pattern = '' # 用以控制输出字符串
    ans = '' # 用以记录输出内容
    count = 0
    sum = 0
    for i in range(int(s), int(e) + 1):
        sum = sum + i
        pattern = pattern + '%5d'
        ans = ans + str(i) + ','
        count = count + 1
        if count % 5 == 0:
            pattern = pattern + '\n'
            count = 0
    if (int(e) - int(s) + 1) % 5 == 0: # 考虑区间中元素正好是5的倍数,留意其换行
        pattern = pattern + 'Sum = %d'
        ans = ans + str(sum)
        print(pattern %(eval(ans)))
    else :
        print(pattern %(eval(ans)))# 等价于print('%5d%5d' %(-3,-2))
        print('Sum = %d' %(sum))
    
  9. 本题是给定精度求\pi的值。注意理解题意。
    # PAT中的基础编程题目集函数题7-15
    threshold = eval(input())
    item = 1.0
    sum = 0.0
    i = 1
    while item >= threshold:
        sum = sum + item
        item = item / (2 * i + 1) * i
        i = i + 1
    sum = sum + item # 直到最后一项的值小于给定阈值
    print('%.6f' %(2.0 * sum))
    
  10. 本题只是通过暴力枚举的方式对解空间进行遍历,并适当剪枝。注意s[0: len(s)-1]s[0: -1]的区别[6]
    # PAT中的基础编程题目集函数题7-16
    s = eval(input())
    pattern = ''
    ans = ''
    count = 0
    for i in range(s, s + 4):
        for j in range(s, s + 4):
            if i != j:
                for k in range(s, s + 4):
                    if i != k and j != k:
                        if count:
                            pattern = pattern + ' %d'
                        else :
                            pattern = pattern + '%d'
                        ans = ans +  str(i * 100 + j * 10 + k) + ','
                        count = count + 1
                        if count % 6 == 0:
                            pattern = pattern + '\n'
                            count = 0
    print(pattern[0: len(pattern) - 1] %(eval(ans)))
    
  11. 本题只需要取小虫头部一个点代表小虫,判断小虫爬行距离与井口的关系:如果不超过井口则下滑;否则就算爬出来。
    # PAT中的基础编程题目集函数题7-17
    Input = input().split()
    N = int(Input[0]); U = int(Input[1]); D = int(Input[2])
    min = 0; height = 0
    while True:
        min += 1
        height += U
        if height >= N:
            break
        min += 1
        height -= D
    print(min)
    
  12. 本题考虑到货币之间的进制关系,f的取值不超过100y的范围就可以在range(0, 50)之间,判断是否具有整数解即可。
    # PAT中的基础编程题目集函数题7-19
     # 51.25 - 23 = 51.02 = 2 * (25.51)
     # f*100+y-n=2(y*100+f)
     # 98f-199y = n
     # f = (n + 199y)/98
    n = eval(input())
    hasSolution = False
    for y in range(0, 50):
        f = (n + 199 * y) / 98
        if f - int(f) == 0:
            print('%d.%d' %(y, int(f)))
            hasSolution = True
    if not hasSolution:
        print('No Solution')
    
  13. 本题考察嵌套循环以及输出格式的控制。
    # PAT中的基础编程题目集函数题7-20
    N = eval(input())
    for i in range(1, N + 1):
        pattern = ''
        ans = ''
        for j in range(1, i + 1):
            pattern += '%d*%d=%-4d'
            ans += str(j) + ',' + str(i) + ',' + str(j * i) + ','
        print(pattern %(eval(ans)))
    
  14. 7-19类似,化简方程判断是否有整数解。
    # PAT中的基础编程题目集函数题7-21
    from math import sqrt
    N = eval(input())
    hasSolution = False
    for x in range(1, int(sqrt((N / 2)))+1):
        y = sqrt((N - x*x))
        if y - int(y) == 0:
            print('%d %d' %(x, y))
            hasSolution = True
    if not hasSolution:
        print('No Solution')
    
  15. 本题主要考虑兔子的运动状况,需要设置睡眠时钟判断继续奔跑还是处于睡眠状态。对于乌龟只需要计算时间\times 速度
    # PAT中的基础编程题目集函数题7-22
    T = eval(input())
    tdis = 0
    rdis = 0
    clock = 0
    while T >= 10:
        if rdis > tdis and not clock: # 兔子在乌龟前,并且没有睡眠,则设置睡眠时钟
            clock = 30
        if not clock: # 兔子没有睡眠,则运动
            rdis += 90
        else : # 兔子在睡眠,则减少睡眠时钟的量
            clock -= 10
        tdis += 30
        T -= 10
    if not clock and rdis <= tdis: # 在剩余时间内,清醒的兔子落后于乌龟,则兔子运动
        rdis += T * 9
    tdis += T * 3
    if tdis > rdis:
        print('@_@ %d' %(tdis))
    elif rdis > tdis:
        print('^_^ %d' %(rdis))
    else :
        print('-_- %d' %(rdis))
    
  16. 按照题意,建立字符串之后,为输出方便将其转为列表按照指定格式输出。
    # PAT中的基础编程题目集函数题7-25
    num = input()
    num = str(int(num))
    pinyin = ans = ''
    for ch in num:
        if ch == '-':
            pinyin += ',fu'
        elif ch == '0':
            pinyin += ',ling'
        elif ch == '1':
            pinyin += ',yi'
        elif ch == '2':
            pinyin += ',er'
        elif ch == '3':
            pinyin += ',san'
        elif ch == '4':
            pinyin += ',si'
        elif ch == '5':
            pinyin += ',wu'
        elif ch == '6':
            pinyin += ',liu'
        elif ch == '7':
            pinyin += ',qi'
        elif ch == '8':
            pinyin += ',ba'
        elif ch == '9':
            pinyin += ',jiu'
    pinyin = pinyin.split(',')
    cnt = 0
    for digital in pinyin:
        cnt += 1
        if cnt == 1:
            continue
        if cnt > 2:
            ans += ' '
        ans += digital
    print(ans)
    
  17. 注意只有.时,表示无单词,不需要任何输出。
    # PAT中的基础编程题目集函数题7-26
    words = input().split()
    pattern = ''
    ans = ''
    cnt = 0 # 用以记录句子中单词个数
    for word in words:
        if word == '.':
            break
        if cnt:
            pattern += ' '
        pattern += '%d'
        if cnt == len(words) - 1:
            ans += str(len(word) - 1) + ','
        else :
            ans += str(len(word)) + ','
        cnt += 1
    if cnt:
        print(pattern %(eval(ans)))
    
  18. 本题通过对字符串不断替换[7],直到无法替换为止。
    # PAT中的基础编程题目集函数题7-29
    Str = input()
    subStr = input()
    while True:
        newStr = Str.replace(subStr, '')
        if newStr == Str:
            break;
        Str = newStr
    print(Str)
    
  19. 本题先将句子中的所有单词逆置,然后按序输出即可。
    # PAT中的基础编程题目集函数题7-32
    words = input().split()
    words = words[: : -1]
    ans = ''
    isFirst = False
    for word in words:
        if isFirst:
            ans += ' '
        else :
            isFirst = True
        ans += word
    print(ans)
    

参考


  1. https://docs.python.org/3.5/tutorial/controlflow.html

  2. https://blog.csdn.net/a18353365031/article/details/79965240

  3. https://www.cnblogs.com/hanggegege/p/5840005.html

  4. https://www.cnblogs.com/jiduxia/p/7643650.html

  5. https://blog.csdn.net/make_app/article/details/45752405

  6. https://www.cnblogs.com/huangcong/archive/2011/08/29/2158268.html

  7. https://blog.csdn.net/killwho/article/details/78205769

上一篇下一篇

猜你喜欢

热点阅读