亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python:如何在每次迭代時更改變量?

Python:如何在每次迭代時更改變量?

德瑪西亞99 2023-06-27 10:45:17
我希望能夠在包含向量“numbers”的循環的每次迭代中打印字符串“names”中存在的不同變量,如下所示:one x=1 y=2two x=3 y=4three x=5 y=6four x=7 y=8five x=9 y=10我該怎么辦?目前我只能編寫這部分代碼:numbers=(1,2,3,4,5,6,7,8,9,10)names=('one', 'two', 'three', 'four', 'five')for i in range (0, len(num)-1,2):     x=numbers[i]     y=numbers[i+1]     print('x=', x, 'y=', y)
查看完整描述

4 回答

?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

請記住數組從 0 開始,您可以從


names = ['zero', 'one', 'two', 'three', 'four']


里面的值names并不重要,但從zero幫助開始。


現在您可以看到您想要的是,對于每個名稱,打印它代表的值 ( i),然后2*i + 1和2*i + 2:


zero   1  2

one    3  4

two    5  6

three  7  8

four   9  10

由于里面的值name并不重要,重要的是它們的位置,因此您可以從 開始重新計數one。


這就是我的解決方案。很簡單,只有三行:


names = ['one', 'two', 'three', 'four', 'five']


for i in range (len(names)):

     print(names[i], 'x =', 2*i+1, 'y =', 2*i+2)

如果您想保留numbers或進行最小程度的更改,請參閱 Alessandro Artoni 的答案:


numbers = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

names = ('one', 'two', 'three', 'four', 'five')


for i in range (0, len(names)):

     x = numbers[i]*2-1

     y = numbers[i]*2

     print(names[i], 'x=', x, 'y=', y)


根據您的評論,這是輸出到文件的方法:


names = ['one', 'two', 'three', 'four', 'five']


with open('output.txt', 'w') as f:

    for i in range (len(names)):

         f.write(names[i] + '  x = ' + str(2*i+1) + '  y = ' + str(2*i+2) + '\n')

或者,既然您選擇了 tobias_k 的答案:


numbers = range(1, 11)

names = ('one', 'two', 'three', 'four', 'five')

result = [(a, *b) for a, b in zip(names, zip(*[iter(numbers)]*2))]


with open('output.txt', 'w') as f:

    for element in result

        f.write("%s  x=%d  y=%d\n" % element)


查看完整回答
反對 回復 2023-06-27
?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

您可以使用zip(*[iter(lst)]*n)配方來迭代值對以及zip帶有名稱的值對。(這首先zip看起來有點神秘。基本上它iter從列表中創建一個,然后zips將該迭代的兩個引用放在一起,從而產生連續元素對。)


>>> numbers=(1,2,3,4,5,6,7,8,9,10)

>>> names=('one', 'two', 'three', 'four', 'five')

>>> [(a, *b) for a, b in zip(names, zip(*[iter(numbers)]*2))]

[('one', 1, 2),

 ('two', 3, 4),

 ('three', 5, 6),

 ('four', 7, 8),

 ('five', 9, 10)]

擁有這些元組后,您可以使用格式字符串來打印它們(或將它們寫入帶有 的文件with open("name", "w") as f: for ...: f.write(...))


for t in [(a, *b) for a, b in zip(names, zip(*[iter(numbers)]*2))]:

    print("%s x=%d y=%d" % t)


查看完整回答
反對 回復 2023-06-27
?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

所需的輸出是:


one x=1 y=2

two x=3 y=4

three x=5 y=6

four x=7 y=8

five x=9 y=10

所以我很快把它們放在一起:


result = ""

max_number = 10


names = ['one', 'two', 'three', 'four', 'five']

y = 0

for i in range (1, max_number, 2):

    result +='%s x=%d y=%d\n' % (names[y], i, i+1)

    y += 1


print(result)

所以基本上我連接每一行并在最后打印所有內容。您也可以邊走邊打印。剩下的就是添加一些驗證以使其穩健:)


查看完整回答
反對 回復 2023-06-27
?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

解決您的問題的最小更改是:


numbers=(1,2,3,4,5,6,7,8,9,10)

names=('one', 'two', 'three', 'four', 'five')

for i in range (0, len(names)):

     x=numbers[i]

     y=numbers[i+1]

     print(names[i], 'x=', x, 'y=', y)

我還建議您使用列表“[]”而不是元組“()”。享受!


查看完整回答
反對 回復 2023-06-27
  • 4 回答
  • 0 關注
  • 198 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號