一.编译器的使用与运行
1.打开编译器
点击桌面左下角,找到python3.6
点击python3.6,再点击IDLE进入编译器
CTRL+N,建立一个新的文件
2.使用编译器
Python的运行方法有两种——交互式和文件式(详见上篇博客)
交互式
直接在IDLE上编译,但只能输入一行
运行方式:键盘输入Enter(回车)即运行,所以此方法只能输入一行,不常用
文件式
在CTRL+N之后产生的新文件上进行编译
运行方法:直接在键盘输入F5或在界面点击Run—Run Module运行,由于此方法可多行输入的便利性,以下解析均使用文件式
二.具体解析(注意每个标点符号都是英文字符)
1.输出
1.直接输出
print("输出内容")
>>>print("Hello 2021!")
Hello 2021!
2.输出特定值
print(特定变量)
>>>s=10
>>>print(s)
10
3.格式输出
print("{输出内容}".format(特定变量))
>>>s=10
>>>print("{}".format(s))
10
关于格式输出的具体解释
1.
”{}“–代表输出的内容,若在{}中添加内容,必须加:
{:.nf}–输出保留n位小数
{:b}–输出为二进制数
{}–输出为八进制数
{:x}–输出为十六进制数
2.
“.format()为固定格式”,format()具体看上篇博客
3.
格式输出可输出多组内容
>>>s1=1
>>>s2=2
>>>print("{} {}".format(s1,s2))
1 2
注意,当多组输出之间用空格隔开的话,也可用前两种方法
>>>print("2","999")
2 999
>>>s1=1
>>>s2=2
>>>print(s1,s2)
1 2
4.格式输出可在“" "”中加入一些提示语
>>>a=1
>>>b=2
>>>c=a*b
>>>print("{}和{}的乘积为{:.2f}".format(a,b,c))
1和2的乘积为2.00
2.输入
由于一些原因,在pta上用python提交代码常会出现非零返回,基于只是仅限于能答对题,在此我们不深究具体原因,仅提供解决方案**(这是菜鸡本鸡自己找的规律,仅适用于这35道题嘻嘻)**
变量名=input()
>>>r=input()
但是因为非零返回有毛病(或者pta有毛病),所以我觉着应该这样写
变量名=eval(input())
>>>r=eval(input())
eval()函数的内容见上个博客,反正当是一组输入时加上这玩意就对了
但是当在7-17题时就不能加上(具体原因我好像明白),而且在输入字符时也不能加(这个可能就是个规律吧)
反正总归来说,加上85%能对,看造化吧嘻嘻
2.多组输入
格式:
变量名=input().split()
>>>r=input().split()
split()同样在上篇博客提到,不做解释
多个量存在了一个变量里该咋调用呢?
哎,这样用
输入样例:7 3
>>>r=input().split()
>>>a=eval(r[0])
>>>b=eval(r[1])
>>>print("a={},b={}".format(a,b))
a=7,b=3
哎,当调用每个输入值时别忘了eval()(但是如果是字符就不加如7-28题),铁子,是不是非常的奈斯嘻嘻
3.else
1.Python简洁到没有废话,不用写头文件,不用加分号,但是,Python很注意细节,导致非零返回的也有可能时细节问题,如写成printf(c,c++等玩家的痛),标点写成中文标点而且,在pta上,非零返回没有解析,但编译器上会显示(那些不先在编译器上写代码的你再不用编译器啊)
2.Python强制使用空白符作为语句缩进,以四个单位(空格)为一层,如
1>>>while a<=n:
2>>> if a*2+b*4==m:
3>>> print("{} {}".format(a,b))
4>>> flag=1
5>>> break;
6>>> a+=1
7>>> b-=1
1是第一层
2,6,7是第二层
4,5是第三层
3.Python的循环语句和选择语句无括号,但有冒号
选择语句
if 选择条件:(注意冒号)
1234语句块(1234代表缩进)
elif 选择条件:(注意冒号)
1234语句块(1234代表缩进)
else:(注意冒号)
1234语句块(1234代表缩进)
if s==1:(注意冒号)
print("我是你baba")
elif s==2:(注意冒号)
print("我是你die")
else:(注意冒号)
print("我真的不想再写教程了好烦啊")
循环语句
while 循环条件:(注意冒号)
1234循环体(1234代表缩进)
>>>while a<=n:(注意冒号)
>>> if a*2+b*4==m:(注意冒号)
>>> print("{} {}".format(a,b))
>>> flag=1
>>> break;
>>> a+=1
>>> b-=1
for 循环变量 in 循环条件:
1234语句块(1234代表缩进)
>>>for a in a<=n:(注意冒号)
>>> if a*2+b*4==m:(注意冒号)
>>> print("{} {}".format(a,b))
>>> flag=1
>>> break;
>>> a+=1
>>> b-=1
4.and“并”,or“或”
5.
s**n s的n次方
s*n s乘n
s/n s除以n
s//n s除以n(忽略小数)
s%n s整除以n的余数
注意符号的优先级,实在不行加括号()
7.7-9题max(n1,n2,n3…)函数,求最大值
8.7-16题a[-1::-1]解析:
格式:字符串[开始索引:结束索引:步长]
开始索引:从指定位置开始截取;
结束索引:从指定位置结束截取,但不包含该位置的字符。若结束索引为空则自动视为到字符串的尾部
字符串截取遵循“左闭右开”原则,也叫“包左不包右”
步长:每次的执行长度,默认为1
输入样例
H e l l o W o r l d !
0 1 2 3 4 5 6 7 8 9 10 11
12 11 10 9 8 7 6 5 4 3 2 1(倒序,都带负号,-1,-2.。。。。,如果逆序(开始索引为负),步长必须有)
三.具体代码
#7-1 Hello World! (5分)
print("Hello World!")
#7-2 教妹妹做数学题(1)已知半径求圆的面积 (5分)
r=3
s=r*r*3.14
print(s)
#或写为
#print("{}".format(s)),format为格式化输出
#7-3 教妹妹做数学题(2)求任意半径的圆的面积 (5分)
pi=3.14
r=eval(input())#eval() 函数用来执行一个字符串表达式,并返回表达式的值。
s=r**2*pi
print(s)
#7-4 A乘以B (5分)
a=input().split()
s=eval(a[0])*eval(a[1])#通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)
print(s)
#7-5 计算长方形的周长和面积 (20分)
a=input().split()
c=(eval(a[0])+eval(a[1]))*2
s=(eval(a[0]))*(eval(a[1]))
print("C =",c)
print("S =",s)
#7-6 是不是太胖了 (5分)
t=eval(input())
#t=float(input())
w=(t-100)*0.9*2
print("{:.1f}".format(w))
#7-7 教妹妹做数学题(4)带小数的乘法 (5分)
n=input().split()
a=eval(n[0])
b=eval(n[1])
c=a*b
print("{}和{}的乘积为{:.2f}".format(a,b,c))
#7-8 带余除法 (10分)
n=input().split()
a=eval(n[0])//eval(n[1])
b=eval(n[0])%eval(n[1])
print("{} {}".format(a,b))
#或print(a,b)
#7-9 简单最值 (15分)
n=input().split()
a=eval(n[0])
b=eval(n[1])
c=eval(n[2])
m=max(a,b,c)
print(m)
#7-10 卖布 (10分)
n=eval(input())
if n>int(n):
print(int(n)+1)#注意是int(n),即将n的小数部分去掉
else:
print(n)
#7-11 数油桶 (10分)
n=input().split()
a=eval(n[0])
b=eval(n[1])
sum=0
while b>0:
sum+=a
a-=1
b-=1
print(sum)
#7-12 鸡兔同笼 (10分)
a=input().split()
n=eval(a[0])
m=eval(a[1])
a=0
b=n
flag=0
while a<=n:
if a*2+b*4==m:#在循环条件或选择条件里两者相等必须用==
print("{} {}".format(a,b))
flag=1
break;#退出while循环
a+=1
b-=1
if flag==0:#或else:
print("无解")
#7-13 后天 (10分)
d=eval(input())
if d==6:
print(1)
elif d==7:
print(2)
else:
print(d+2)
#7-14 取三位数字的个位、十位、百位数字 (5分)
n=input()
print("个位数字:{},十位数字:{},百位数字:{}".format(n[2],n[1],n[0]))
#7-15 人生苦短,我学python (5分)
a=input()
print("{}同学,人生苦短,我学python".format(a))
print("{}大侠,学好python,走遍天下也不怕".format(a[0]))
print("{}小盆友,学好python,你最帅".format(a[1:]))
#7-16 字符串逆序 (5分)
a=input()
print(a[-1::-1])
#7-17 逆序的三位数 (15分)
a=input()#本解析将输入视为字符串,所以没有eval()
b=a[-1::-1]
d=b.strip("0")#strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
print(d)
#7-18 进制转换 (5分)
a=eval(input())
print("{:b} {:o} {:x}".format(a,a,a))
#7-19 多说几遍我爱你 (5分)
a=input().split()
b=a[0]
c=eval(a[1])*"我爱你"
print("{}{}".format(b,c))
#7-20 祝贺你成年了! (10分)
a=eval(input())
if a>=18:
print("Congratulations.")
#7-21 jmu-python-判断是否构成三角形 (10分)
n=input().split()
a=eval(n[0])
b=eval(n[1])
c=eval(n[2])
if a+b>c and a+c>b and b+c>a:#and是并且的意思,or是或者的意思
print("yes")
else:
print("no")
#7-22 简单的猜数字游戏[1] (10分)
a=eval(input())
if a>38:
print("Too big!")
elif a<38:
print("Too small!")
else:
print("Good Guess!")
#7-23 程序员买西瓜 (10分)
a=input()
if a=='Y':
print("1")
elif a=='N':
print("10")
else:
print("error")
#7-24 成绩转换 (10分)
a=eval(input())
if a>=90:
print("A")
elif a>=80:
print("B")
elif a>=70:
print("C")
elif a>=60:
print("D")
else:
print("E")
#7-25 三天打鱼两天晒网 (10分)
a=eval(input())
if a%5 in [1,2,3]:
print("Fishing in day {}".format(a))
else:
print("Drying in day {}".format(a))
#7-26 计算水费 (10分)
a=eval(input())
if a>10:
print(20+(a-10)*3)
else:
print(2*a)
#7-27 jmu-python-汇率兑换 (10分)
a=input()
if a[0:1]=="R":
print("{}{:.2f}".format("$",eval(a[1:])/6))
else:
print("{}{:.2f}".format("R",eval(a[1:])*6))
#7-28 计算油费 (10分)
n=input().split()
a=eval(n[0])
b=eval(n[1])
c=n[2]
if c=='m':
e=0.95
else:
e=0.97
if b==90:
d=6.95
elif b==93:
d=7.44
else:
d=7.93
print("{:.2f}".format(a*d*e))
#7-29 求一元二次方程的整数根 (10分)
print("{} {} ".format((-5),(-1)))
'''
import math
n=input().split()
a=eval(n[0])
b=eval(n[1])
c=eval(n[2])
if b**2-4*a*c>0:
x1=(-b+math.sqrt(b**2-4*a*c))/(2*a)
x2=(-b-math.sqrt(b**2-4*a*c))/(2*a)
elif b**2-4*a*c==0:
x1=(-b)/2/a
x2=x1
else:
x1="无根"
x2=x1
print("{} {}".format(x1,x2))
'''
#7-30 求1到100的和 (10分)
i=1
sum=0
while i<=100:
sum+=i
i+=1
print("sum = {}".format(sum))
#7-31 jmu-python-偶数之积 (10分)
n=eval(input())
i=1
sum=1
while i<=n:
if i%2==0:
sum*=i
i+=1
print(sum)
#7-32 计算阶乘和 (10分)
import math
n=eval(input())
i=1
s=0
while i<=n:
s+=math.factorial(i)#math.factorial()阶乘,若使用要调用math文件
i+=1
print(s)
#7-33 猴子吃桃问题 (15分)
#import math
n=eval(input())
i=2
sum=1
while i<=n:
i+=1
sum=(sum+1)*2
print(sum)
#7-34 求整数的位数及各位数字之和 (15分)
n=input()
#或n=input().strip()#strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
l=len(n)
s=0
i=0
while i<l:
s+=eval(n[i])
i+=1
print("{} {}".format(l,s))
#7-35 jmu-python-输入输出-计算字符串中的数 (30分)
a=input().split()
i=0
w=0
while i<len(a):
w+=eval(a[i])
i+=1
print(len(a))
print("{:.3f}".format(w))