赞
踩
我们常常使用print()函数将信息输出到控制台上,这与其他语言有着不谋而合之处,关于print函数输出,有些地方仍然需要做一些补充:
①可以使用多个逗号分割表达式,然后这些个表达式会转换成一个字符串并输出,如:
print("你好啊,","我是阿尔伯特·爱因斯坦。","我发现了广义相对论和",
"狭义相对论,欢迎来和我PK")
②格式化输出信息
如果希望输出文字信息的同时,一起输出数据,就需要使用到格式化操作符
% 被称为格式化操作符,专门用于处理字符串中的格式,包含%的字符串,被称为格式化字符串
% 和不同的字符连用,不同类型的数据需要使用不同的格式化字符
下面整理了常用的格式化字符:
字符 | 含义及相应的属性 |
---|---|
%s | 字符串 |
%d | 有符号的十进制位整数输出,%06d表示输出的整数显示位数字,不足的地方使用0补全 |
%f | 浮点数,%.2f表示小数点后显示两位 |
%% | 输出% |
a:int=12345
b:float=3.1415926
str='浮点数b保留'
print("整数a输出的7位显示位数为:%07d"%a) #输出0012345
print("%s3位小数后是%.3f"%(str,b)) #输出3.142
与输出相类似,输入也使用了一个函数进行数据输入,那就是input()函数,input函数中可以加入相应的字符串作为提示字符:
如:
input('请输入长方形的长:')
①eval()函数:
eval()函数用来执行一个字符串表达式,并返回表达式的值。还可以把字符串转化为list(列表)、tuple(元组)、dict(词典).
1)源码:
def eval(*args, **kwargs): # real signature unknown
“”"
Evaluate the given source in the context of globals and locals.
The source may be a string representing a Python expression
or a code object as returned by compile().
The globals must be a dictionary and locals can be any mapping,
defaulting to the current globals and locals.
If only globals is given, locals defaults to it.
“”"
2)语法:
eval(expression[,globals[,locals]])
- expression:表达式。
- globals:变量作用域,如果被提供,必须是一个字典对象。
- locals:变量作用域,如果被提供,可以说任何映射对象。
3)实例:
Ⅰ.字符串转换成列表和词典:
#eval操作:(字符串转成词典和列表)
a="[1,4,9,16,25]"
b=eval(a)
print("转化成列表:"and b)
x='''{'website':'www.4399.com',
'record':{
'port':'127.0.0.1',
'server':'localhost',
'maxconn':30000
}
}
'''
y=eval(x)
print("转换成词典:"and y)
输出:
Ⅱ.返回表达式的值
检查下面代码,你认为会输出什么?
#eval求表达式的值
x=10
b=20
c=30
g={'a':6,b:8}
t={'b':100,'c':10}
m={'b':b,'c':c}
print(eval('a+b+c',g,m))
正确答案是:56
这里eval中的参数指的是从该集合中取得的变量,若未声明从何处取得的,那么该程序就会运行错误。
②format()函数:
format函数是格式化函数,增强了字符串格式化的功能。
基本语法:( {}和:代替%)
操作及示例:
‘{} {} {}’.format(‘python’, ‘Hello’, ‘World’)
‘python Hello World’
‘{1} {1} {2}’.format(‘python’, ‘Hello’, ‘World’)
‘Hello Hello World’
‘my name is {name}, {age} years old’.format(name=‘Tom’, age=18)
‘my name is Tom, 18 years old’
从showgea博客中借鉴的知识:
槽内部对格式化的配置方式{<参数序号>:<格式控制标记>}
参数序号 | 格式控制标记 |
---|---|
: | 引导符号 |
<填充> | 用于填充的单个字符 |
<对齐> | <左对齐 >右对齐 ^居中对齐 |
<宽度> | 槽设定的输出宽度 |
<,> | 数字的千位分隔符 |
<.精度> | 浮点数小数,精度或字符串,最大输出长度 |
<类型> | 主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制 |
对齐:
>>> print('{:=<20}'.format('python'))
python==============
>>> print('{:=>20}'.format('python'))
==============python
>>> print('{:=^20}'.format('python'))
=======python=======
>>> print('{:^20}'.format('python'))
python
千分位,精度
>>> '{:,.2f}'.format(123456.789)
'123,456.79'
进制:
>>> '{:b}'.format(123)
'1111011'
>>> '{:d}'.format(123)
'123'
>>> '{:o}'.format(123)
'173'
>>> '{:x}'.format(123)
'7b'
>>> '{:X}'.format(123)
'7B'
>>> '{:%}'.format(123)
'12300.000000%'
题目:
温度的刻画有两个不同体系:摄氏度(Celsius)和华氏度(Fahrenheit)。
请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。
转换算法如下:(C表示摄氏度、F表示华氏度)
C = ( F - 32 ) / 1.8
F = C * 1.8 + 32
要求如下:
(1) 输入输出的摄氏度可采用大小写字母C结尾,温度可以是整数或小数,如:12.34C指摄氏度12.34度;
(2) 输入输出的华氏度可采用大小写字母F结尾,温度可以是整数或小数,如:87.65F指华氏度87.65度;
(3) 输出保留小数点后两位,输入格式错误时,输出提示:输入格式错误;
(4) 使用input()获得测试用例输入时,不要增加提示字符串。
题解:
Str = input()
if Str[-1] in ['f', 'F']: #Str[-1]代表字符串的最后一个字符
C = (eval(Str[0:-1]) - 32) / 1.8 #截取除了符号位以外的作为数值
print("{:.2f}C".format(C)) #format是格式化函数
elif Str[-1] in ['c', 'C']:
F = 1.8 * eval(Str[0:-1]) + 32
print("{:.2f}F".format(F))
else: print('输入格式错误')
题目:
人民币和美元是世界上通用的两种货币之一,写一个程序进行货币间币值转换,其中:
人民币和美元间汇率固定为:1美元 = 6.78人民币。
程序可以接受人民币或美元输入,转换为美元或人民币输出。人民币采用RMB表示,美元USD表示,符号和数值之间没有空格。
注意:
(1) 这是一个OJ题目,获得输入请使用input() ;
(2) 不提示输出格式错误,结果小数点后保留两位
Str=input();
if(Str[0:3]=='RMB'):
D=eval(Str[3:])/6.78
print('USD%.2f' %D)
elif(Str[0:3]=='USD'):
R=eval(Str[3:])*6.78
print('RMB%.2f' %R)
python中常使用#进行单行注释,常使用三个单引号或者双引号将内容引起来进行多行注释,这与Java,C 语言是有很大不同的.
①以下关于Python语言中“缩进”说法正确的是:
错选:缩进是强制的,仅为了提高代码的可读性
正解:缩进在程序中长度统一且强制使用
②以下不属于IPO模型的是:
Program
【IPO模型包括:Input、Process和Output】
数值运算:
由于没有考虑到eval()函数的解析能力,导致本题题解复杂化,分情况讨论了,题目如下:
获得用户输入的一个字符串,格式如下:
M OP N
其中,M和N是任何数字,OP代表一种操作,表示为如下四种:+, -, *, /(加减乘除)
根据OP,输出M OP N的运算结果,统一保存小数点后2位。
注意:M和OP、OP和N之间可以存在多个空格,不考虑输入错误情况。
string = input() # 输入字符串 op_num = 0 # 初始值 op = ['+', '-', '*', '/'] # 数组存放操作符 for i, s in enumerate(string): if s in op and i != 0: # 先判断是否符合输入方式 s代表操作符 i代表输入字符 op_num = i if string[0] == '-': # 第一个字符是负号 num1 = -float((string[1:i]).strip()) # 移除空格的前提下 提取从第一个字符到第i个字符 elif string[0:2] == '0x': # 是否是16进制数 num1 = int(eval((string[:i]).strip())) # 提取到第i个数字数字 else: num1 = float((string[0:i]).strip()) num2 = float((string[i + 1:]).strip()) # 提取之后的数字 if s == op[0]: # 判断op的符号 print('{:.2f}'.format(num1 + num2)) elif s == op[1]: print('{:.2f}'.format(num1 - num2)) elif s == op[2]: print('{:.2f}'.format(num1 * num2)) else: print('{:.2f}'.format(num1 / num2))
题解:
s=input()
print("{:.2f}".format(eval(s)))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。