• PTA(Basic Level) Practice 刷题(部分) Python实现


    突然发现草稿箱里有几个3月份刷PTA的做题记录,忘记当时为什么没有发,现在整理一下重新发出来吧。

    ● 1001 害死人不偿命的(3n+1)猜想

    wVgHmD.png
    我最初代码如下:

    # 判断输入是否正确
    while True:
        n = input()
        if n.isdigit():
            # 将n转为int型
            n = int(n)
            # 判断数字是不是超过1000的正整数
            if 0 < n < 1000:
                break
    # 判断n的奇偶性,根据奇偶性进行计算
    count = 0
    while n != 1:
        if n % 2 == 0:    # 奇数
            n /= 2
        else:   # 偶数
            n = (3*n+1) / 2
        count += 1
    # 输出
    print(count)
    

    按上面这样提交会报“非零返回”,不知是什么原因,暂时修改成下面这样,PTA提示答案正确。

    n = int(input())
    # 判断n的奇偶性,根据奇偶性进行计算
    count = 0
    while n != 1:
        if n%2 == 0:    # 奇数
            n/=2
        else:   # 偶数
            n=(3*n+1)/2
        count += 1
    # 输出
    print(count)
    
    

    ● 1002 写出这个数

    wVg5Sx.png

    # 接收一个输入,判断其是否为小于10^100的正整数
    while True:
        n = input()
        if n.isdigit():
            num = int(n)
            if 0 <= num <= 10**100:
                break
    # 获取输入的数各位之和
    digit_sum = 0
    for i in n:
        digit_sum += int(i)
    # 用汉语拼音输出结果
    cn_num = ["ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"]
    digit_sum = str(digit_sum)  # 将digi_sum转换为str类型
    count = 0
    for i in digit_sum:
        print(cn_num[int(i)], end="")
        count+=1
        if count!= digit_sum.__len__():
            print(" ", end="")
    

    ● 1006 换个格式输出整数

    wVgo6K.png

    # 接收键盘输入一个不超过3位的正整数
    while True:
        n = input()
        if n.isdigit():
            if 0 < int(n) <1000:
                n = int(n)
                break
    # 换格式输出
    n_1 = int(n%10)
    n_2 = int(n/10%10)
    n_3 = int(n/100)
    print("B"*n_3 + "S"*n_2, end="")
    for i in range(1, n_1+1):
        print(i, end="")
    

    ● 1009 说反话

    wVgIl6.png

    # 接收用户输入一句长度不超过80的字符串
    while True:
        en_str = input()
        if en_str.__len__() <=80:
            break
    # 倒序输出
    en_list = en_str.split(" ")
    en_list.reverse()
    count = 0
    for i in en_list:
        count+=1
        print(i, end="")
        # 末尾不输出空格
        if count != en_list.__len__():
            print(" ", end="")
    

    ● 1003 我要通过

    wVgTOO.png
    wVgb0e.png

    def check(sl:str) -> str:
        # 判断是否只有PAT这三个字母
        for i in sl:
            if i not in "PAT":
                return "NO"
        # 判断PAT是否存在且PT是否唯一
        if sl.count("A") == 0:
            return "NO"
        if sl.count("P") != 1:
            return  "NO"
        if sl.count("T") != 1:
            return  "NO"
        # 判断P是否在T之前
        if sl.index("T") < sl.index("P"):
            return "NO"
        # 判断A的数量和位置是否符合条件
        a = sl[:sl.index("P")]
        b = sl[sl.index("P"):sl.index("T")]
        c = sl[sl.index("T"):]
        if b.count("A") == 1:
            if a.count("A") != c.count("A"):
                return "NO"
        elif b.count("A") == 0:
            return "NO"
        else:
            if a.count("A") == c.count("A") == 0:
                return "YES"
            elif c.count("A") == 0:
                return "NO"
            elif c.count("A")/a.count("A") != b.count("A"):
                return "NO"
        return "YES"
    
    n = int(input())
    # 输入测试用例
    sl = []
    for i in range(n):
        ss = input()
        sl.append(ss)
    # 接收结果
    result = []
    for i in sl:
        re = check(i)
        result.append(re)
    # 循环输出结果
    for i in result:
        print(i)
    
    

    wVgqTH.png

  • 相关阅读:
    css
    js
    css3
    css
    深浅拷贝
    index-数据结构/算法
    es6知识点
    在vscode中配置sass savepath
    计算机基础
    element-ui使用后手记
  • 原文地址:https://www.cnblogs.com/CharrammaBlog/p/12496382.html
Copyright © 2020-2023  润新知