PTA——python运算数学表达式、字符串中提取学号 abcd(19)、句子首字母变大写

python运算数学表达式

本题目要求读入2个整数A和B,然后按下面的式子输出C的值。
在这里插入图片描述
请充分考虑A、B输入可能出现的情况。

输入格式:
输入在一行中给出2个整数A和B。

输出格式:
对每一组输入,在一行中输出C的值,保留二位小数。
若B输入了0,输入提示“分母不能为0”
若输入有误,给出输出“输入有误!”

输入样例:
在这里给出一组输入。例如:

18 -299

输出样例:
在这里给出相应的输出。例如:

-876.72

解答

  1. 使用split()函数,对在同一行数据进行分割,默认为按空格进行分割;使用map()函数,将分割后的字符串赋值给对应变量x,y;
  2. 判断x,y变量是否符合数字规律,即对x,y分别使用for循环,观察每一位的字符情况;
  3. 最后将x,y转化为整数类型,判断分母是否为零,为零直接输出;不为零则带入表达式计算输出结果。

代码如下

x, y = map(str, input().split())
for i in range(len(x)):
    if x[i] == '-':
        if i != 0 or len(x) == 1:
            print("输入有误!")
            exit(0)
        continue
    elif '0' <= x[i] <= '9':
        continue
    else:
        print("输入有误!")
        exit(0)
for j in range(len(y)):
    if y[j] == '-':
        if j != 0 or len(y) == 1:
            print("输入有误!")
            exit(0)
        continue
    if '0' <= y[j] <= '9':
        continue
    else:
        print("输入有误!")
        exit(0)
x = int(x)
y = int(y)
if(y==0):
    print("分母不能为0")
else:
    c = (2 ** x + 7 - 3 * 4) / y
    print("%.2f" % c)

字符串中提取学号 abcd(19)

题目

一个字符串中有一个或者两个数字字符表示学生的学号,现在需要你把学号提取出来,正常来说,学号在一对()之间。
但是存在一些不规范的输入,比如abcd(19dk),学号应该是19。(后是一个数字,否则非法,返回not find。只有一个0是一个非法学号,输出not find。

输入格式:
abcd(19)

输出格式:
19

输入样例:

ydsf(00)
abc(08)

输出样例:
在这里给出相应的输出。例如:

not find
8

代码

x = str(input())
left = 0
right = 0
for i in x:
    if (i == '('):
        left += 1
    if (i == ')'):
        right += 1
if ((left != 1) | (right != 1)):
    print("not find")
    exit(0)
x = x.split('(')
x = x[1]
x = x.split(')')
x = x[0]
x = x[0:2]
m = int(0)
if (x == ''):
    print("not find")
    exit(0)
if (len(x) == 1):
    if (x[0] == '0'):
        print("not find")
        exit(0)
    if ((x[0] > '0') & (x[0] <= '9')):
        m = int(x[0])
        print(m)
        exit(0)
if (x == "00"):
    print("not find")
    exit(0)
if ((x[0] >= '0') & (x[0] <= '9')):
    if ((x[1] < '0') | (x[1] > '9')):
        m = int(x[0])
        print(m)
        exit(0)
if ((x[0] >= '0') & (x[0] <= '9')):
    if ((x[1] >= '0') & (x[1] <= '9')):
        m = int(x[0]) * 10 + int(x[1])
        print(m)
        exit(0)
print("not find")

句子首字母变大写

题目

输入一行句子,将每个句子的首字母变为大写。每个单词之间都有空格,每个句子以?或.或!结尾。

输入格式:
输入一段字符串

输出格式:
将句子的首字母变大写输出字符串

输入样例:

you are a sight sore eyes! you look well.

输出样例:

You are a sight sore eyes! You look well. 

代码

x = str(input())
flag = 1
m = ''
for i in x:
    if ((i >= 'A') & (i <= 'Z')):
        flag = 0
    if (flag == 1):
        if ((i >= 'a') & (i <= 'z')):
            i = i.upper()
            flag = 0
    if (i == '.'):
        flag = 1
    if (i == '!'):
        flag = 1
    if (i == '?'):
        flag = 1
    m += i
m += ' '
print(m)

猜你喜欢

转载自blog.csdn.net/The_onion/article/details/127047063
今日推荐