对于Python元组分配和条件语句检入感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍python元组分配和条件语句检入一样吗,并为您提供关于2.Python基础之变量和条件语句、ArcGIS1
对于Python元组分配和条件语句检入感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍python元组分配和条件语句检入一样吗,并为您提供关于2. Python 基础之变量和条件语句、ArcGIS 10 python – 条件语句检查以查看栅格值是否在集合中、python - 条件语句/循环语句/迭代器、Python if 条件语句的代码例子的有用信息。
本文目录一览:- Python元组分配和条件语句检入(python元组分配和条件语句检入一样吗)
- 2. Python 基础之变量和条件语句
- ArcGIS 10 python – 条件语句检查以查看栅格值是否在集合中
- python - 条件语句/循环语句/迭代器
- Python if 条件语句的代码例子
Python元组分配和条件语句检入(python元组分配和条件语句检入一样吗)
因此,我偶然发现python中元组的特定行为,我想知道是否有特定原因发生。
尽管我们完全有能力将元组分配给变量,而无需将其显式地括在括号中:
>>> foo_bar_tuple = "foo","bar">>>
我们无法以以前的方式打印或检查条件if语句中包含元组的变量(没有显式地键入括号):
>>> print foo_bar_tuple == "foo","bar"False bar>>> if foo_bar_tuple == "foo","bar": passSyntaxError: invalid syntax>>>>>> print foo_bar_tuple == ("foo","bar")True>>>>>> if foo_bar_tuple == ("foo","bar"): pass>>>
有人为什么吗?在此先感谢,尽管我没有找到任何类似的主题,但是如果您认为这可能是重复的,请通知我。干杯,亚历克斯
答案1
小编典典这是因为用逗号分隔的表达式是在整个逗号分隔的元组(这是Python语法术语中的“表达式列表”)之前进行求值的。因此,当您这样做时foo_bar_tuple=="foo","bar"
,将被解释为(foo_bar_tuple=="foo"),"bar"
。在文档中描述了此行为。
如果仅自己编写这样的表达式,则可以看到以下内容:
>>> 1, 2 == 1, 2 # interpreted as "1, (2==1), 2"(1, False, 2)
未带括号的元组的SyntaxError是因为未带括号的元组不是Python语法中的“原子”,这意味着它不是if
条件的唯一内容。(您可以通过跟踪语法来自己验证这一点。)
2. Python 基础之变量和条件语句
1. 第一个 Python 程序
1.1 在 Windows 进入 Python 解释器下执行 Hellow World 程序
C:\Users\Admin>python # 通过执行 python 进入。
Python 3.5.4 (v3.5.4:3f56838, Aug 8 2017, 02:17:05) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello World!") # 执行第一个 Python 程序。
Hello World!
1.2 编辑一个 .py 文件并通过 python 命令执行 Hellow World 程序
print ("Hello World!") # 文件内容。
C:\Users\Admin>d: # 切换到 D 盘。
D:\>dir
D:\ 的目录
2018/12/17 20:55 24 1.py # 可以看到刚刚创建的 .py 文件。
2018/12/16 17:14 <DIR> BaiduNetdisk
2018/09/11 12:50 <DIR> Haozip
D:\>python 1.py # 通过 python 命令执行该程序(报错语法错误)。
1.3 指定 Python 解释器
在每一个 Python 程序中的第一行指定解释器,两种方法如下所示:
#! /usr/bin/env python # 找环境变量(优先推荐该方法)。
#! /usr/bin/python # 指定就找该路径下的 Python。
2. Python 中的变量
2.1 Python 开发工具之 PyCharm 简介
PyCharm是一种 Python IDE,带有一整套可以帮助用户在使用 Python 语言开发时提高其效率的工具,比如调试、语法高亮、Project 管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持 Django 框架下的专业 Web开发。
2.2 PyCharm 的安装激活及使用(略)
2.3 Python 中的变量定义及调用
2.3.1 声明一个变量并调用变量:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Zhang Lei
name = "Zhang Lei"
print ("My name is ",name)
2.3.2 执行该 Python 程序结果如下所示:
D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day1/var2.py
My name is Zhang Lei
Process finished with exit code 0
2.3.3 有关变量调用变量的问题:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Zhang Lei
name = "Zhang Lei" # 此时 name 的值是 Zhang Lei。
name2 = name # 此时 name2 指向的是 name 的值(指向 name 指向的内存空间,此时已经和 name 没有关系了)。
print ("My name is ",name)
name = "tangsangou" # 此时 name 被重新赋予了新的值,但是 name2 依旧指向前面所指向的内存空间,即 Zhang Lei(不会随着 name 的改变而改变)。
print (name,name2)
2.3.4 执行的结果如下所示:
D:\pycharmfiles\first\venv\Scripts\python.exe D:/pycharmfiles/first/day1/var2.py
My name is Zhang Lei
tangsangou Zhang Lei
Process finished with exit code 0
2.4 Python 中变量定义的规则
变量名只能是数字、字母或下划线的任意组合(不能使用中杠)。
变量名的第一个字符不能是数字。
变量名要有指定的意义,方便理解,禁止使用中文定义变量。
最好不好和 Python 内置的函数或类重复 ***
以下关键字不能声明为变量名:
''and'', ''as'', ''assert'', ''break'', ''class'', ''continue'', ''def'', ''del'', ''elif'', ''else'', ''except'', ''exec'', ''finally'', ''for'', ''from'', ''global'', ''if'', ''import'',
''in'', ''is'', ''lambda'', ''not'', ''or'', ''pass'', ''print'', ''raise'', ''return'', ''try'', ''while'', ''with'', ''yield
3. 常用条件语句
3.1 if 条件语句
3.1.1 if 条件语句语法
if 条件:
print(''OK'') # 代码块(缩进为四个空格或 TAB)。
else:
print(''Error'') # 代码块(缩进为四个空格或 TAB)。
3.1.2 if 条件语句示例一
[root@learnpy ~]# vim 1.py
if 1 == 1:
print("欢迎使用 Python 语言")
else:
print("欢迎使用 Shell 编程语言")
[root@learnpy ~]# python3 1.py # 执行结果如下。
欢迎使用 Python 语言
3.1.3 if 条件语句示例二
[root@learnpy ~]# vim huisuo.py
inp = input(''请输入会员级别:'')
if inp == "高级会员":
print(''美女'')
elif inp == "白金会员":
print(''嫩模'')
elif inp == "铂金会员":
print(''一线小明星'')
else:
print(''恐龙'')
print(''开始服务吧!'')
[root@learnpy ~]# python3 huisuo.py
请输入会员级别:铂金会员
一线小明星
开始服务吧!
3.1.4 if 条件语句示例三
if 1 == 1:
pass # 此处的 pass 代指空代码,无意义,仅用来标识代码块。
else:
print(''tsb'')
3.2 while 循环条件语句
3.2.1 while 循环语句示例一
[root@learnpy ~]# vim whl.py
import time
count = 0
while count < 10:
print(''ok'',time.time())
count = count + 1 # 每循环一加一,执行 10 次后不成立则跳出循环执行下面的 print。
print(123)
[root@learnpy ~]# python3 whl.py
ok 1545153008.163795
ok 1545153008.163953
ok 1545153008.1639652
ok 1545153008.1639752
ok 1545153008.163988
ok 1545153008.163995
ok 1545153008.163999
ok 1545153008.164003
ok 1545153008.1640072
ok 1545153008.1640112
123
3.2.2 while 循环之 else 示例
[root@learnpy ~]# vim whels.py
count = 0
while count < 10:
print(count)
count = count + 1
else:
print(''else'')
print (''----end----'')
[root@learnpy ~]# python3 whels.py
0
1
2
3
4
5
6
7
8
9
else
----end----
# 可以看到,当 count 循环加一为 10(即 count < 10 不成立)时,跳出循环执行 else 后面的指令。
3.2.3 while 循环之 continue 示例
[root@learnpy ~]# vim whcont.py
count = 0
while count < 10:
if count == 7:
count = count + 1
continue
print(count)
count = count + 1
[root@learnpy ~]# python3 whcont.py
0
1
2
3
4
5
6
8
9
# 可以看到,continue 指令可以跳出本次循环(不再执行该条件下指令),进入下一次循环。
3.2.4 while 循环之 break 示例
[root@learnpy ~]# vim whcont.py
count = 0
while count < 10:
count = count + 1
print(count)
break
print(''----end----'')
[root@learnpy ~]# python3 whcont.py
1
----end----
# 可以看到当执行到 break 的时候终止了所有循环(跳出整个循环)。
3.3 For 循环语句
3.3.1 For 循环语句的语法:
for 变量名 in 字符串:
指令如 print(变量名)
# break
# continue
4. 条件语句练习题
4.1 使用 while 循环输入 1 2 3 4 5 6 8 9 10
[root@learnpy ~]# vim prectice1.py
n = 1
while n < 11:
if n == 7:
pass
else:
print(n)
n = n + 1
print(''----end----'')
[root@learnpy ~]# python3 prectice1.py # 执行结果如下。
1
2
3
4
5
6
8
9
10
4.2 求 1-100 的所有数的和
[root@learnpy ~]# vim prectice2.py
n = 1
s = 0
while n < 101:
s = s + n
n = n + 1
print(s)
[root@learnpy ~]# python3 prectice2.py # 执行结果如下。
5050
4.3 输出 1 - 100 内的所有奇数
[root@learnpy ~]# vim prectice3.py
n = 1
while n < 101:
temp = n % 2
if temp == 0:
pass
else:
print(n)
n = n + 1
print(''----end----'')
[root@learnpy ~]# python3 prectice3.py # 执行结果如下(省略若干)。
1
3
5
4.4 输出 1 - 100 内的所有偶数
[root@learnpy ~]# vim prectice4.py
n = 1
while n < 101:
temp = n % 2
if temp == 0:
print(n)
else:
pass
n = n + 1
print(''----end----'')
[root@learnpy ~]# python3 prectice4.py # 执行结果如下(省略若干)。
2
4
6
4.5 求 1 - 2 + 3 - 4 + 5 ... 99 的结果
[root@learnpy ~]# vim prectice5.py
n = 1
s = 0
# s是之前所有数的总和
while n < 100:
temp = n % 2
if temp == 0:
s = s - n
else:
s = s + n
n = n + 1
print(s)
[root@learnpy ~]# python3 prectice5.py # 执行结果如下。
50
4.6 用户登录,用户名为 alinuxer,密码为 123(三次机会重试)
[root@learnpy ~]# vim login.py
count = 0
while count < 3:
user = input(''user >>>'')
pswd = input(''pswd >>>'')
if user == ''alinuxer'' and pswd == ''123'':
print(''欢迎登录我的网站'')
print(''Welcome to login my website'')
break
else:
print(''用户名或密码错误'')
count = count + 1
[root@learnpy ~]# python3 login.py
user >>>alinuxer
pswd >>>123
欢迎登录我的网站
Welcome to login my website
[root@learnpy ~]# python3 login.py
user >>>kjasjdf
pswd >>>af
用户名或密码错误
user >>>asdfa
pswd >>>dsaf
用户名或密码错误
user >>>alinuxer
pswd >>>123
欢迎登录我的网站
Welcome to login my website
ArcGIS 10 python – 条件语句检查以查看栅格值是否在集合中
如果栅格值等于set()中包含的数字,那么我希望它为1,否则为0
我尝试过以下方法:
ConfusedRaster = arcpy.Con(inraster in repeatSet,1,0)
和
ConfusedRaster = arcpy.Con(inraster,"inraster in repeatSet")
这些都不奏效.我相信它们不起作用,因为where子句只接受Map Algebra表达式:ArcGIS Help
我还可以考虑另外两种方法来做这件事.一个是将它转换为NumPyArray并使用它.另一个是循环遍历集合并为集合中的每个值创建栅格对象.循环完成后合并它们.
有没有人对如何解决这个问题有任何建议或意见?
谢谢
解决方法
repeatList = list(repeatSet) ras1 = arcpy.sa.ExtractByAttributes(inraster,''VALUE IN ('' + str(repeatList).strip(''[]'') + '')'') ConfusedRaster = arcpy.sa.Con(arcpy.sa.IsNull(ras1) == 0,0)
python - 条件语句/循环语句/迭代器
条件测试:
if 条件表达式
python 的比较操作
所有的python对象都支持比较操作
可用于测试相等性、相对大小等
如果是复合对象,python会检查其所有部分,包括自动遍历各级嵌套对象,知道可以得出最终结果。
测试操作符
‘==’操作符测试值得相等性
''is'' 表达式测试对象的一致性。
python 中不同类型的比较方法
数字:通过相对大小进行比较
字符串:按照字典次序逐字符进行比较
列表和元组:自左至右比较各部分内容
字典:对排序之后的(键、值)列表进行比较
python 中真和假的含义
1.任何非零数字和非空对象都为真,否则为假
2.数字0、空对象和特殊None 均为假
3.比较和相等测试会递归地应用于数据结构中
4.返回值为True或False
组合条件测试:
X and Y : 与运算
X or Y : 或运算
not X :非运算
判断语句格式:
if boolean_expression1:
suite1
elif boolean_expression2:
suite2
else:
eslse)suite
while 循环
用于便携通用迭代结构
顶端测试为真即会执行循环体,并且重复多次测试知道为假后执行循环后的其他语句
循环表达式:
while boolean_expression:
while_suite
else:
else_suite
#只要boolean_expression的结果为True ,循环就一直执行;
#boolean_expression的结果为False时终止循环,此时如果有else分支,则会执行.
************************************************************************
* #break 跳出最内层的循环
* #continue 跳出所处的最近层循环的开始处
* #pass 点位语句
* #else 代码块,循环正常终止才会执行,如果循环终止是由break 跳出导致 * 的,则else不会执行。
************************************************************************
while 表达式:
while True:
x = raw_input('''')
if x == ''q'' or x == ''quit'':
break
else:
test.append(x)
for循环
一个通用的序列迭代器,用于遍历任何有序的序列对象内的元素
可用于字符串、元组、列表和其他的内置可迭代对象,以及通过类所穿件的新对象。
python 也提供了一些能够进行隐形迭代的工具:
in成员关系测试
列表解析
map、reduce和filter函数
for表达式:
for expression in object:
for_suite
if boolean_expression2 : continue
if boolean_expression3 :break
else:
else_suite
python 迭代
迭代:重复做一件事
iterable(可迭代)对象
支持每次返回自己所包含的一个成员对象
对象实现了__iter__方法
序列类型,如:list,str,tuple
非徐磊类型,如:dict,file
用于自定义的一些包含_iter_()或_getitem_()方法的类
迭代器又称游标,它是程序设计的软件设计模式,是一种可在容器物件(container,如列表等)上实现元素遍历的接口
迭代器是一种特殊的数据结构,
简单理解方式:对于一个集体中的每一个元素,想要执行遍历,那么针对这个集合的迭代器定义了遍历集体每一个元素的顺序或方法.
迭代器本身是不可逆的.
迭代器
在python中迭代器是遵循迭代协议的对象
使用iter()可从任何序列对象中得到迭代器
若要实现迭代器,需要在类中定义next()方法(python3 中是 __next__())
要使得迭代器指向下一个元素,则使用成员函数next()
在python中,是函数next(),而非成员函数
当没有元素时,则会引发stoptieration异常
文件是可迭代:
iter()
_iter_()
for循环可用于任何可迭代对象
for循环开始时,会通过迭代协议传递给iter()内置函数,从而能够从可迭代对象中获取一个迭代器,返回的对象含有需要的next方法.
python列表解析:
列表解析是python迭代机制的一种应用,它常用于实现创建新的列表,因此要放置[]中
语法:
[expression for iter_var in iterable ]
[expression for iter_var in iterable if cond_expr ]
生成器表达式
生成器表达式并不是真正创建数字列表,而是返回一个生成器对象,此对象在每次自己算出一个条目后,把这个条目''产生''(yield)出来
生成器表达式使用了"惰性计算"或称作''延迟求职''的机制
序列过长,并且每次只需要取一个元素时,应当考虑使用生成器表达式而不是列表解析
生成器表达式于python2.4引入
语法:
(expr for iter_var in iterable)
(expr for iter_var in iterbale if cond_expr)
Python if 条件语句的代码例子

上一篇讲的 if 条件语句的语法和一些注意事项以及简单的使用了下,这篇文章就用一个上网的实例分为简单版和进阶版来更深层次的加强学习 if 语句。
实例:上网
需求: 如果用户年龄大于等于 18 岁,即成年,输出 “你已经成年,可以上网了”
简单版:
分析: 年龄大于都等于 18,输出 “你已经成年,可以上网了”
准备工作: 准备年龄的数据 和 18 做比较,主要看这个年龄是大于等于 18 还是小于 18,如果大于等于 18 就表示成年了,输出指定要输出的语句就可以了
# 准备数据
age = 20
# if条件语句
if age >= 18:
print(''你已经成年,可以上网了'')
# 返回结果:你已经成年,可以上网了
进阶版:
新增需求: 用户可以输出自己的年龄,然后系统进行判断是否成年,成年则输出 “您的年龄是‘用户输入的年龄’,已经成年,可以上网”。
# 系统可以让用户输入年龄,在用这个年龄做条件判断
"""
思路:
1. 用户输入年龄
2. 保存用户输入的年龄
3. 书写if
***在这个过程中要注意一个点就是input接收到的数据类型是字符串,不能和18数字整型做比较,需要用int函数进行类型转换
"""
age = input(''请输入您的年龄:'')
if age >= 18:
print(f''您的年龄是{age},已经成年,可以上网'')
# 以上是没有对数据的数据类型进行处理,所以会报错,我们看看报错的提示
报错提示:
TypeError: ''>='' not supported between instances of''str'' and ''int'' 报错提示告诉我们,一个数据是 str 字符串类型,另外一个数据类型是 int 整型,数据类型不一样不可以做大小比较判断,input 接收用户输入的数据是字符串类型,条件是 age 和整型 18 做判断,所以这里需要利用 int 函数来转换数据类型。
int 转换类型后代码:
age = int(input(''请输入您的年龄:''))
if age >= 18:
print(f''您的年龄是{age},已经成年,可以上网'')
返回结果:
总结:做判断的时候一定要注意数据的数据类型,然后载进行判断,以上就是 if 语句的两个实例,想要看更多 Python 练习题可以去 Python 自学网或者去网上搜索。
l
今天关于Python元组分配和条件语句检入和python元组分配和条件语句检入一样吗的介绍到此结束,谢谢您的阅读,有关2. Python 基础之变量和条件语句、ArcGIS 10 python – 条件语句检查以查看栅格值是否在集合中、python - 条件语句/循环语句/迭代器、Python if 条件语句的代码例子等更多相关知识的信息可以在本站进行查询。
本文标签: