#if-else语句
age = int(input("请输入年龄:"))
if age >= 7:
print("可以上小学")
else:
print("年龄未满足要求,不可以上小学")
---------------------------------------------------
请输入年龄:8
可以上小学
---------------------------------------------------
请输入年龄:3
年龄未满足要求,不可以上小学
#if-elif语句
holiday_name = input("请输入节日:")
if holiday_name == '儿童节':
print("是小孩子的节日!")
elif holiday_name == '端午节':
print("今天要吃粽子!!")
elif holiday_name == '情人节':
print("今天要买一束花送给她!")
else :
print("今天是努力的一天!")
#if嵌套语句
list1 = [1,3,5,9,'apple','bee']
a = input("请输入")
if a in list1:
if a == 'apple':
print("Ture")
else:
print(False)
else:
print("请重新尝试")
---------------------------------------------------
请输入apple
Ture
三元运算符是对简单的条件语句的简写
#三元运算符
a = int(input("输入a:"))
b = int(input("输入b:"))
print("a大于b") if a>b else print("b大于a") if a<b else print("a等于b")
---------------------------------------------------
输入a:3
输入b:3
a等于b
python中的循环语句有for和while
while循环使用else语句:如果while后面的体哦阿健语句为false时,泽执行else的句块
#一般形式
while 判断条件(condition):
执行语句(statements)....
#while循环语句
count = 0
while count < 5:
print(count,"小于5")
count = count + 1
else :
print(count,"大于等于5")
---------------------------------------------------
0 小于5
1 小于52 小于5
3 小于5
4 小于5
5 大于等于5
for循环可以遍历任何可迭代对象
#本金10000元存入银行,年利率是千分之三,每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是多少?
benjin = 10000
nianlilv = 0.0003
for i in range(1,6):
new = (benjin*nianlilv+benjin)
benjin = new
print("五年后获得的本金为:",benjin)
----------------------------------------------------
五年后获得的本金为: 10015.009002700404
在字典遍历中,关键字和对应的值可以使用items()方法同时解读出来:items()方法以列表返回试图对象,是一个可便利的key/value对
#items()方法字典遍历
knights = {'gallahad':'the pure','robin':'the brave'}
for k,v in knights.items():
print(k,v)
---------------------------------------------------
gallahad the pure
robin the brave
在序列遍历中,索引位置和对应值可以使用enumerate()函数同时得到:enumerate()函数用于可便利的数据对象(如列表、元组、字符串)组合为一个索引序列,同时列出数据和数据下标,一般用于for循环当中
#enumerate()函数进行序列遍历
for i,v in enumerate(['tic','tac','toe']):
print(i,v)
---------------------------------------------------
0 tic
1 tac
2 toe
同时遍历两个或多个序列时,可以使用zip()组合。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 ***** 号操作符,可以将元组解压为列表。
#zip()函数将对象元素打包
a = [1,2,3]
b = {'ada','dasd','ads','aaaa'}
for x,y in zip(a,b):
print(x,y)
---------------------------------------------------
1 dasd
2 aaaa
3 ads
#zip()函数依次取出二位列表的每列函数
list1 = [[1, 2, 3, 4, 5, 6],
[1, 3, 5, 7, 9, 11],
[3, 4, 5, 6, 8, 9],
[2, 4, 6, 8, 10, 12],
[0, 3, 5, 7, 9, 0],
[5, 6, 8, 2, 3 ,4]]
for i in zip(*list1):
print(i)
reversed()函数返回一个反转的迭代器,因此要反转一个序列,首先指定这个序列然后调用reversed()函数
#reversed()函数反转迭代器
star = "qwert"
print(list(reversed(star)))
-----------------------------------------------------
['t', 'r', 'e', 'w', 'q']
要按顺序遍历一个序列,可以使用sorted()函数返回一个已经排序的序列,并不修改原值。
#sorted()函数遍历排序
a = sorted([5,6,2,4,3,9,8]) #默认升序
print(a)
b = a.sort() #list.sort方法返回的是原始的列表,值为None
print(b)
-----------------------------------------------------
[2, 3, 4, 5, 6, 8, 9]
None
在python中pass是空语句,是为了保持程序结构的完整性,pass不做任何事情,一般用做占位语句
#pass语句占位
while True:
pass
-----------------------------------------------------
#返回为空
#简单的迭代器
list1 = [1,2,4,5,6]
a = iter(list1) #创建迭代器对象
print(next(a)) #输出迭代器的下一元素
print(next(a))
print(next(a))
-----------------------------------------------------
1
2
4
迭代器对象可以使用常规for语句进行遍历
#使用for语句进行迭代器遍历
list1 = [1,2,4,5,6]
a = iter(list1)
for x in a:
print(x,end="") #end传递空字符串,意为末尾不换行加空格
-----------------------------------------------------
12456
什么是生成器?可以通俗的认为,在一个函数中,使用yield来代替return的位置的函数就是生成器
自定义函数规则
#自定义函数求圆的面积
import math
pi=math.pi #引用Π值
def yuan(r):
s = pi*r*r
return s
r = float(input("请输入半径:"))
s = print(yuan(r))
---------------------------------------------------
请输入半径:5
78.53981633974483
参数传递分为传不可变对象以及传可变对象
以下是调用函数时可使用的正式参数类型:
必须参数/关键字参数/默认参数/不定长参数
#调用printme()函数
def printme(str):
print(str) #打印任何传入的字符串
return
printme() #未传参报错
---------------------------------------------------
TypeError: printme() missing 1 required positional argument: 'str'
#调用printinfo()函数
def printinfo(name,age):
print("姓名:",name)
print("年龄:",age)
return
printinfo(age=19,name="runoob")
---------------------------------------------------
姓名: runoob
年龄: 19
#默认参数
def printinfo(name,age = 35):
print("姓名:",name)
print("年龄:",age)
return
printinfo(age=19,name="runoob")
print("------------------------------")
printinfo(name="runoob")
---------------------------------------------------
姓名: runoob
年龄: 19
------------------------------
姓名: runoob
年龄: 35
#不定长参数第一种
def sum(*crad):
sum = 0
for weight in crad:
sum += weight
if sum > 500:
print("超重了!再不下,就给你一个大笔兜")
return sum
sum_s = sum(50,80,200,200) #自动组成一个元组传入形参
----------------------------------------------------
超重了!再不下,就给你一个大笔兜
#不定长参数第二种
def student_n(**info):
print(info)
dict = info
return dict
dict = student_n(name="小王",id="001",score="82")
----------------------------------------------------
{'name': '小王', 'id': '001', 'score': '82'}
声明函数时,参数中星号*可以单独出现,如果单独出现星号后的参数必须用关键字传入
#*关键字传参
def f(a,b,*,c):
return a+b+c
f(1,2,3) #星号后未用关键字传参导致报错
----------------------------------------------------
Traceback (most recent call last):
File "f:/python_prictace/02-python.py", line 187, in <module>
f(1,2,3)
TypeError: f() takes 2 positional arguments but 3 were given
#*关键字传参
def f(a,b,*,c):
return a+b+c
print(f(1,2,c=3))
----------------------------------------------------
6
#混合使用
def foo(*args,**kargs):
print(args)
print(kargs)
foo(a=2,1,2,3)
#当同时使用*和**时,必须将*的参数列在**的前面,否则会报错
----------------------------------------------------
File "f:/python_prictace/02-python.py", line 196
foo(a=2,1,2,3)
^
SyntaxError: positional argument follows keyword argument
#混合使用
def foo(*args,**kargs):
print(args)
print(kargs)
foo(1,2,3,a=2)
----------------------------------------------------
(1, 2, 3)
{'a': 2}
#lambda表达式创建一元二次方程
def fx(a,b,c):
return lambda x : a*x*x + b*x + c
f = fx(1,2,3)
print(f(3))
----------------------------------------------------
18
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A
我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re
我正在尝试用ruby中的gsub函数替换字符串中的某些单词,但有时效果很好,在某些情况下会出现此错误?这种格式有什么问题吗NoMethodError(undefinedmethod`gsub!'fornil:NilClass):模型.rbclassTest"replacethisID1",WAY=>"replacethisID2andID3",DELTA=>"replacethisID4"}end另一个模型.rbclassCheck 最佳答案 啊,我找到了!gsub!是一个非常奇怪的方法。首先,它替换了字符串,所以它实际上修改了
我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin
我在用Ruby执行简单任务时遇到了一件奇怪的事情。我只想用每个方法迭代字母表,但迭代在执行中先进行:alfawit=("a".."z")puts"That'sanalphabet:\n\n#{alfawit.each{|litera|putslitera}}"这段代码的结果是:(缩写)abc⋮xyzThat'sanalphabet:a..z知道为什么它会这样工作或者我做错了什么吗?提前致谢。 最佳答案 因为您的each调用被插入到在固定字符串之前执行的字符串文字中。此外,each返回一个Enumerable,实际上您甚至打印它。试试